本申请实施例公开了一种业务标识生成方法和装置。为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,该方法包括:业务标识生成器接收请求获取业务标识的消息(携带业务服务器标识和业务对象标识);响应于该消息,查询业务对象标识指示的目标业务对象在当前的最大业务标识值,并对业务服务器标识进行哈希计算,用哈希计算值对预设阈值进行取模计算;先计算取模计算值与预设步长值的乘积,再计算乘积值与业务标识最大值的和值作为起始值,计算起始值与预设步长值的和值作为终止值,最终生成初始的业务标识区间。根据本申请实施例,既可以减小业务标识生成器故障对业务的影响范围,还保证生成的业务标识是唯一的。
【技术实现步骤摘要】
本申请涉及计算机应用领域,特别是涉及业务标识生成方法和装置。
技术介绍
在互联网应用中,业务服务器为客户端的每一笔业务创建一个业务实例(由该业 务实例执行业务处理)后,都需要为该业务实例分配一个唯一的标识(ID,Identify),该ID 即为业务ID。一般情况下,可W利用业务数据库的自增主键模式为各业务实例生成唯一的 ID,再由业务服务器分配给各业务实例。 由于互联网环境下的庞大数据量给业务数据库带来巨大的访问压力,因此,业务 数据库通常都会做分库或分表处理。分库的好处是易于对业务数据库进行横向(水平)扩 容。例如,将1个业务数据库水平扩容成4个分库(每个分库可W部署在单独的服务器上)。 送样,访问压力可W分散在4个分库上,每个分库的访问压力就会变小,性能也就随之提高 了。 在业务数据库被分库的情况下,现有技术中又提出了一种采用集中式的ID生成 器为各业务实例生成唯一的ID的方法。在该实现方法中,请参阅图1所示,多个业务服务 器(每个业务服务器都可W处理多种不同的业务类型,如,一个业务服务器可W处理付款 业务和转账业务两种业务类型)共用同一个集中式的ID生成器。针对任意一个业务服务 器(假设为业务服务器1),集中式的ID生成器会根据该业务服务器1的请求,为该业务服 务器1上的某一个业务对象(假设为业务对象A)生成一个唯一的ID区间(即,ID区间中 的每一个ID都是唯一的),W便当该业务服务器1每创建该业务对象A的一个业务实例后, 集中式的ID生成器就可W从该ID区间中取出一个ID,供该业务服务器1分配给该业务实 例。当ID区间中的所有ID全部用完后,还可W再重复执行上述流程,W保证该业务服务器 A可W使用新的ID区间。在上述过程中,集中式的ID生成器依赖于分布式锁的方式保证为 各个业务服务器上的各个业务对象生成的ID区间都是唯一的。 但是,在实现本申请的过程中,本申请的专利技术人发现现有技术中至少存在如下问 题;由于多个业务服务器共用同一个集中式的ID生成器,因此,一旦该集中式的ID生成器 因出现故障而不可用,并且,在该集中式的ID生成器恢复正常之前,各业务服务器获取的 ID区间中的ID也全部用完,就会导致所有业务服务器无法为新创建的业务实例分配ID,进 而无法完成业务处理。因此,所有业务服务器上的所有业务都会因该集中式的ID生成器出 现故障而同时受到影响。
技术实现思路
为了解决上述技术问题,本申请实施例提供了业务标识生成方法和装置,W在减 小ID生成器的故障对业务的影响范围的同时,还要保证生成的业务标识是唯一的。 本申请实施例公开了如下技术方案: -种业务标识生成方法,为多个业务服务器中的至少一个分配一个只属于所述业 务服务器的业务标识生成器,所述方法包括: a)、业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器 标识和业务对象标识; b)、响应于所述消息,业务标识生成器查询所述业务对象标识指示的目标业务对 象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对 预设阔值进行取模计算,所述预设阔值大于或等于分布式系统中的业务服务器的总个数; C)、业务标识生成器按照StartlDl = MaxID+MX St巧计算初始的业务标识区间的 起始值,并按照化dIDl = StartIDl+St巧计算初始的业务标识区间的终止值,最终为所述 目标业务对象生成初始的业务标识区间,其中,StartlDl为初始的业务标识区间的起始值, 化dIDl为初始的业务标识区间的终止值,MaxID为业务标识最大值,Μ为取模计算值,Step 为预设步长值。 优选的,所述方法还包括: d)、在生成了初始的业务标识区间之后,业务标识生成器按照StartID2 = MaxID+AXSt巧计算非初始的业务标识区间的起始值,并按照化dID2 = Sta;rtID2+St巧计 算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区 间,其中,StartID2为非初始的业务标识区间的始值,化dID2为非初始的业务标识区间的 终止值,MaxID为业务标识最大值,A为预设阔值,Step为预设步长值。 优选的,所述方法还包括: e)、业务标识生成器将为所述目标业务对象生成的业务标识区间保存在所属的业 务服务器的内存中。 优选的,在步骤b)之前,所述方法还包括: bO)业务标识生成器判断在所属的业务服务器的内存中是否保存有为所述目标业 务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识; 则所述步骤b)具体为,如果否,业务标识生成器查询所述业务对象标识指示的目 标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希 计算值对预设阔值进行取模计算,所述预设阔值大于或等于业务服务器的总个数。 优选的,所述方法还包括: f)、如果是,业务标识生成器从所述业务标识区间中读取业务标识。 优选的,所述方法还包括: g)、业务标识生成器利用所述业务标识区间的终止值更新所述目标业务对象在当 前的业务标识最大值。 优选的,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP 地址的组合。 -种业务标识生成装置,为多个业务服务器中的至少一个分配一个只属于所述业 务服务器的业务标识生成装置,所述装置包括: 接收单元,用于接收请求获取业务标识的消息,所述消息携带有业务服务器标识 和业务对象标识; 查询计算单元,用于响应于所述消息,查询所述业务对象标识指示的目标业务对 象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对 预设阔值进行取模计算,所述预设阔值大于或等于分布式系统中的业务服务器的总个数; 第一生成单元,用于按照StartIDl = MaxIDl+MXSt巧计算初始的业务标识区间 的起始值,并按照化dIDl = StartlDl+Step计算初始的业务标识区间的终止值,最终为所 述目标业务对象生成初始的业务标识区间,其中,StartlDl为初始的业务标识区间的起始 值,化dIDl为初始的业务标识区间的终止值,MaxID为业务标识最大值,Μ为取模计算值, St巧为预设步长值。 优选的,所述装置还包括: 第二生成单元,用于在所述第一生成单元生成了初始的业务标识区间之后, StartIDS = MaxID+A X St巧计算非初始的业务标识区间的起始值,并按照化dID2 = StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初 始的业务标识区间,其中,StartID2为非初始的业务标识区间的始值,化dID2为非初始的 业务标识区间的终止值,MaxID为业务标识最大值,A为预设阔值,St巧为预设步长值。 优选的,所述装置还包括: 保存单元,用于将为所述目标业务对象生成的业务标识区间保存在所属的业务服 务器的内存中。 优选的,所述装置还包括: 判断单元,用于在启动所述查询计算单元之前,判断在所属的业务服务器的内存 中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用 的业务标识; 所述查询计算单元具体用于,如果所述判断单元的判断结果为否,查询所述本文档来自技高网...
【技术保护点】
一种业务标识生成方法,其特征在于,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成器,所述方法包括:a)、业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;b)、响应于所述消息,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;c)、业务标识生成器按照StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
【技术特征摘要】
【专利技术属性】
技术研发人员:江建明,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。