CN105447023A - 业务标识生成方法和装置 - Google Patents

业务标识生成方法和装置 Download PDF

Info

Publication number
CN105447023A
CN105447023A CN201410422055.1A CN201410422055A CN105447023A CN 105447023 A CN105447023 A CN 105447023A CN 201410422055 A CN201410422055 A CN 201410422055A CN 105447023 A CN105447023 A CN 105447023A
Authority
CN
China
Prior art keywords
service
service identification
value
initial
interval
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410422055.1A
Other languages
English (en)
Other versions
CN105447023B (zh
Inventor
江建明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Singapore Holdings Pte Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410422055.1A priority Critical patent/CN105447023B/zh
Publication of CN105447023A publication Critical patent/CN105447023A/zh
Application granted granted Critical
Publication of CN105447023B publication Critical patent/CN105447023B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请实施例公开了一种业务标识生成方法和装置。为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,该方法包括:业务标识生成器接收请求获取业务标识的消息(携带业务服务器标识和业务对象标识);响应于该消息,查询业务对象标识指示的目标业务对象在当前的最大业务标识值,并对业务服务器标识进行哈希计算,用哈希计算值对预设阈值进行取模计算;先计算取模计算值与预设步长值的乘积,再计算乘积值与业务标识最大值的和值作为起始值,计算起始值与预设步长值的和值作为终止值,最终生成初始的业务标识区间。根据本申请实施例,既可以减小业务标识生成器故障对业务的影响范围,还保证生成的业务标识是唯一的。

Description

业务标识生成方法和装置
技术领域
本申请涉及计算机应用领域,特别是涉及业务标识生成方法和装置。
背景技术
在互联网应用中,业务服务器为客户端的每一笔业务创建一个业务实例(由该业务实例执行业务处理)后,都需要为该业务实例分配一个唯一的标识(ID,Identify),该ID即为业务ID。一般情况下,可以利用业务数据库的自增主键模式为各业务实例生成唯一的ID,再由业务服务器分配给各业务实例。
由于互联网环境下的庞大数据量给业务数据库带来巨大的访问压力,因此,业务数据库通常都会做分库或分表处理。分库的好处是易于对业务数据库进行横向(水平)扩容。例如,将1个业务数据库水平扩容成4个分库(每个分库可以部署在单独的服务器上)。这样,访问压力可以分散在4个分库上,每个分库的访问压力就会变小,性能也就随之提高了。
在业务数据库被分库的情况下,现有技术中又提出了一种采用集中式的ID生成器为各业务实例生成唯一的ID的方法。在该实现方法中,请参阅图1所示,多个业务服务器(每个业务服务器都可以处理多种不同的业务类型,如,一个业务服务器可以处理付款业务和转账业务两种业务类型)共用同一个集中式的ID生成器。针对任意一个业务服务器(假设为业务服务器1),集中式的ID生成器会根据该业务服务器1的请求,为该业务服务器1上的某一个业务对象(假设为业务对象A)生成一个唯一的ID区间(即,ID区间中的每一个ID都是唯一的),以便当该业务服务器1每创建该业务对象A的一个业务实例后,集中式的ID生成器就可以从该ID区间中取出一个ID,供该业务服务器1分配给该业务实例。当ID区间中的所有ID全部用完后,还可以再重复执行上述流程,以保证该业务服务器A可以使用新的ID区间。在上述过程中,集中式的ID生成器依赖于分布式锁的方式保证为各个业务服务器上的各个业务对象生成的ID区间都是唯一的。
但是,在实现本申请的过程中,本申请的发明人发现现有技术中至少存在如下问题:由于多个业务服务器共用同一个集中式的ID生成器,因此,一旦该集中式的ID生成器因出现故障而不可用,并且,在该集中式的ID生成器恢复正常之前,各业务服务器获取的ID区间中的ID也全部用完,就会导致所有业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理。因此,所有业务服务器上的所有业务都会因该集中式的ID生成器出现故障而同时受到影响。
发明内容
为了解决上述技术问题,本申请实施例提供了业务标识生成方法和装置,以在减小ID生成器的故障对业务的影响范围的同时,还要保证生成的业务标识是唯一的。
本申请实施例公开了如下技术方案:
一种业务标识生成方法,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成器,所述方法包括:
a)、业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;
b)、响应于所述消息,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;
c)、业务标识生成器按照StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
优选的,所述方法还包括:
d)、在生成了初始的业务标识区间之后,业务标识生成器按照StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间,其中,StartID2为非初始的业务标识区间的始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。
优选的,所述方法还包括:
e)、业务标识生成器将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
优选的,在步骤b)之前,所述方法还包括:
b0)业务标识生成器判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识;
则所述步骤b)具体为,如果否,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于业务服务器的总个数。
优选的,所述方法还包括:
f)、如果是,业务标识生成器从所述业务标识区间中读取业务标识。
优选的,所述方法还包括:
g)、业务标识生成器利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
优选的,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP地址的组合。
一种业务标识生成装置,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成装置,所述装置包括:
接收单元,用于接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;
查询计算单元,用于响应于所述消息,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;
第一生成单元,用于按照StartID1=MaxID1+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
优选的,所述装置还包括:
第二生成单元,用于在所述第一生成单元生成了初始的业务标识区间之后,StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间,其中,StartID2为非初始的业务标识区间的始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。
优选的,所述装置还包括:
保存单元,用于将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
优选的,所述装置还包括:
判断单元,用于在启动所述查询计算单元之前,判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识;
所述查询计算单元具体用于,如果所述判断单元的判断结果为否,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于业务服务器的总个数。
优选的,所述装置还包括:
读取单元,用于如果所述判断单元的判断结果为是,从所述业务标识区间中读取业务标识。
优选的,所述装置还包括:
标识更新单元,用于利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
优选的,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP地址的组合。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,也就是说,一个业务标识生成器只为一个业务服务器提供生成业务标识的服务。如果某个业务标识生成器因出现故障而不可用,只会导致该业务标识生成器所属的某一个业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理,而并不会影响到其它的业务服务器的正常工作,显然,可以减小局部业务标识生成器的故障对全局业务的影响范围。
并且,每个业务标识生成器基于所属的业务服务器唯一的业务服务器标识生成业务标识区间,保证生成的业务标识区间是唯一的,而不会与其它业务标识生成器生成的业务标识区间重复。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了现有技术所实施的示例性应用场景;
图2示意性地示出了本申请的实施方式可以在其中实施的示例性应用场景;
图3为本申请一种业务标识生成方法的一个实例的流程图;
图4为本申请一种业务标识生成方法的另一个实例的流程图;
图5为本申请提供的一种业务标识生成装置的一个实施例的结构图;
图6为本申请提供的一种业务标识生成装置的另一个实施例的结构图;
图7为本申请提供的一种业务标识生成装置的另一个实施例的结构图;
图8为本申请提供的一种业务标识生成装置的另一个实施例的结构图。
具体实施方式
本申请实施例提供了基于分布式环境的业务标识生成方法和装置。与现有技术中多个业务服务器共享同一个业务标识生成器不同,在本申请实施例的技术方案中,为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,也就是说,在本申请实施例中,可以一部分业务服务器与现有技术一样共享ID生成器,而另一部分业务服务器各自唯一对应一个ID生成器,即,针对该部分业务服务器,一个业务标识生成器只为一个业务服务器提供生成业务标识的服务。当然,也可以是每个业务服务器都各自唯一对应一个ID生成器。其中,业务标识生成器可以作为一个模块集成在业务服务器中,从而只专属于所在的业务服务器,并只为该业务服务器提供生成业务标识的服务。
可以理解的,如果某个业务标识生成器因出现故障而不可用,只会导致该业务标识生成器所属的某一个业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理,而并不会影响到其它的业务服务器的正常工作,显然,可以减小局部业务标识生成器的故障对全局业务的影响范围。
而对于每个业务标识生成器来说,其关键在于,必须要保证为所属的业务服务器上的各业务对象生成唯一的业务标识(业务ID),不与其它的业务标识生成器生成的业务标识重复。
请参阅图2所示,图2示意性地示出了本申请的实施方式可以在其中实施的示例性应用场景。其中,业务标识生成器10A专为业务服务器20A上的付款业务对象生成唯一的业务标识区间11A,业务标识生成器10B专为业务服务器20B上的转账业务对象生成唯一的业务标识区间11B,……业务标识生成器10N专为业务服务器20N上的发货业务对象生成唯一的业务标识区间11N。业务服务器20A每创建一个付款业务对象的业务实例,业务标识生成器10A就从业务标识区间11A中取出一个业务标识110A,业务服务器20B每创建一个转账业务对象的业务实例,业务标识生成器10B就从业务标识区间11B中取出一个业务标识110B,……业务服务器20N每创建一个发货业务对象的业务实例,业务标识生成器10N就从业务标识区间11N中取出一个业务标识110N。
服务器20A、20B……20N可以是Web服务器,也可以是其他类型的服务器,例如APP服务器。本领域技术人员可以理解,图2所示的示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的应用范围不受到该框架任何方面的限制。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例进行详细描述。
方法实施例
基于上述应用场景,为了保证每个业务标识生成器为所属的业务服务器上的业务对象生成唯一的业务标识区间,与现有技术中的分布式锁的方式不同,在本申请的技术方案中,提供了一种新型的业务标识生成方法,该生成方法主要是基于每个业务服务器唯一的业务服务器标识生成唯一的业务标识区间。
请参阅图3,其为本申请一种业务标识生成方法的一个实例的流程图,在为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器后,该方法包括以下步骤:
步骤301:业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识。
其中,业务服务器标识是业务服务器的身份标识,用于证明业务服务器的唯一性。通常,会采用服务器的IP地址作为服务器的标识。但是,在本申请的技术方案中,考虑到位于不同机房的业务服务器的IP地址可能会相同,只使用IP地址无法证明业务服务器的唯一性。
因此,在本发明的一个优选实施方式中,业务服务器标识包含该业务服务器所在机房的机房名和该业务服务器的IP地址。也就是说,针对每个业务服务器,其标识为机房名+IP地址。例如,机房1+192.168.1.1。
当然,除此之外,考虑到每个业务服务器在出厂的时候都会固定配置一个MAC地址,并且,该MAC地址是唯一的,不会与其它的业务服务器上的MAC地址重复。因此,业务服务器标识还可以是业务服务器的MAC地址。
步骤302:响应于所述消息,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数。
业务标识生成器可以将其所属的业务服务器上的各业务对象在当前的业务标识最大值(即,在当前,为各业务对象分配的业务标识区间中的最大值)预先保存在一个业务标识数据库中,并实时进行数据更新。
该业务标识数据库可以与业务标识生成器一样,都专属于一个业务服务器。这样,在该业务标识数据库中,可以维护业务对象标识与业务标识最大值之间的映射关系。业务标识生成器通过在业务标识数据库中查询业务对象标识,就可以确定该业务对象标识指示的目标业务对象在当前的业务标识最大值。
当然,该业务标识数据库还可以集成在业务服务器的业务数据库中,作为业务数据库中的一个子库。而此时,该业务数据库也只专属于业务标识生成器所属的业务服务器。
如果业务标识数据库或者业务数据库并不是专属于业务标识生成器所属的业务服务器,而是被多个业务服务器共享。在该业务标识数据库或者业务数据库中,不仅需要维护业务服务器标识和业务对象标识与业务标识最大值之间的映射关系,而且业务标识生成器需要先通过在数据库中查询业务服务器标识和业务对象标识,才可以确定该业务服务器标识和业务对象标识指示的目标业务服务器上的目标业务对象在当前的业务标识最大值。
业务标识生成器一方面查询业务标识最大值,另一方面还可以并行地进行哈希计算以及取模计算。
下面以分布式系统中的业务服务器的总个数为8个,预设阈值设置为8为例,进行说明。可以理解的,由于8个业务服务器的业务服务器标识都是唯一的,因此,8个业务标识生成器进行哈希计算后得到的哈计算值也是唯一的。而无论8个业务标识生成器所得到的哈希计算值为多少,当对8进行取模计算后,其取模计算值只可能是0、1、2、3、4、5、6和7。并且,由于哈希计算值是唯一的,因此,8个业务标识生成器得到的取模计算值也必然是唯一的,即,8个业务标识生成器得到的取模计算值必然是:0、1、2、3、4、5、6和7。
例如,如下表所示:
业务标识生成器 业务服务器标识 业务类型 哈希计算值 取模计算值
1 机房1+192.168.1.0 付款 10000 0
2 机房1+192.168.1.1 付款 10100 1
3 机房1+192.168.1.2 付款 10200 2
4 机房1+192.168.1.3 付款 10300 3
5 机房2+192.168.1.0 付款 10400 4
6 机房2+192.168.1.1 付款 10500 5
7 机房2+192.168.1.2 付款 10600 6
8 机房2+192.168.1.3 付款 10700 7
显然,每个业务标识生成器得到的取模计算值都各不相同。
步骤303:业务标识生成器按照StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。仍旧以上面的8个业务标识生成器为例,其业务标识最大值都为0,假设预设步长值为100,生成的初始的业务标识区间分别如下表所示:
可见,业务标识生成器1得到的初始的业务标识区间为[0,100],业务标识生成器2得到的初始的业务标识区间为[100,200],…….业务标识生成器8得到的初始的业务标识区间为[700,800]。可以保证每个初始的业务标识区间的唯一性。
在首次生成了初始的业务标识区间之后,业务标识生成器按照StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间(即,第一个业务标识区间),其中,StartID2为非初始的业务标识区间的起始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。此时,对于每一个业务标识生成器来说,业务标识最大值为其生成的前一个业务标识区间中的终止值。
例如,上述8个业务标识生成器生成的非初始的业务标识区间分别如下表所示:
可见,业务标识生成器1得到的非初始的业务标识区间为[900,1000],业务标识生成器2得到的非初始的业务标识区间为[1000,1100],…….业务标识生成器8得到的非初始的业务标识区间为[1600,1700]。不仅可以保证每个非初始的业务标识区间的唯一性,而且,各非初始的业务标识区间与各初始的业务标识区间之间也不会重复。
在本发明的另一个优选实施方式中,业务标识生成器利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
例如,业务标识生成器1得到的非初始的业务标识区间[900,1000]后,就将目标业务对象在当前的业务标识最大值从100更新为1000。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,也就是说,一个业务标识生成器只为一个业务服务器提供生成业务标识的服务。如果某个业务标识生成器因出现故障而不可用,只会导致该业务标识生成器所属的某一个业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理,而并不会影响到其它的业务服务器的正常工作,显然,可以减小局部业务标识生成器的故障对全局业务的影响范围。
并且,每个业务标识生成器基于所属的业务服务器唯一的业务服务器标识生成业务标识区间,保证生成的业务标识区间是唯一的,而不会与其它业务标识生成器生成的业务标识区间重复。
在本发明的一个优选实施方式中,业务标识生成器将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
这样,业务服务器在每创建该业务对象的一个实例后,业务标识生成器就可以从保存的业务标识区间中取出一个业务标识,并分配给该实例。如果业务标识生成器将业务标识区间中的业务标识全部取出,就会再重新为该业务对象生成一个业务标识区间。
请参阅图4,其为本申请一种业务标识生成方法的另一个实例的流程图,在为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器后,该方法包括以下步骤:
步骤401:业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识。
步骤402:响应于所述消息,业务标识生成器判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识,如果是,进入步骤403,否则,进入步骤404。
步骤403:业务标识生成器从所述业务标识区间中读取业务标识,结束流程。
步骤404:业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数。
步骤405:业务标识生成器StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间。
其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。如果在所属的业务服务器内存中没有保存有为目标业务对象生成的业务标识区间,业务标识生成器就需要按照步骤404和405的方式为该目标业务对象生成一个初始的业务标识区间。
如果在所属的业务服务器内存中保存有为目标业务对象生成的业务标识区间,但该业务标识区间中的所有业务标识全部被使用,业务标识生成器就需要为该目标业务标识生成一个非初始的业务标识区间。其中,在步骤404中,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值。而在步骤405中,业务标识生成器按照StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间。
其中,StartID2为非初始的业务标识区间的起始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。由上述实施例可以看出,与现有技术相比,本申请的优点在于:
为多个业务服务器中的至少一个分配一个只属于该业务服务器的业务标识生成器,也就是说,一个业务标识生成器只为一个业务服务器提供生成业务标识的服务。如果某个业务标识生成器因出现故障而不可用,只会导致该业务标识生成器所属的某一个业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理,而并不会影响到其它的业务服务器的正常工作,显然,可以减小局部业务标识生成器的故障对全局业务的影响范围。
并且,每个业务标识生成器基于所属的业务服务器唯一的业务服务器标识生成业务标识区间,保证生成的业务标识区间是唯一的,而不会与其它业务标识生成器生成的业务标识区间重复。
装置实施例
与上述一种业务标识生成方法相对应,本申请实施例还提供了一种业务标识生成装置。请参阅图5,其为本申请提供的一种业务标识生成装置的一个实施例的结构图,其中,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成装置,该装置包括:接收单元501、查询计算单元502和第一生成单元503。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
接收单元501,用于接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;
查询计算单元502,用于响应于所述消息,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;
第一生成单元503,用于按照StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间。
其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
在本申请的一个优选实施方式中,如图6所示,该装置还包括:
第二生成单元504,用于在所述第一生成单元生成了初始的业务标识区间之后,按照StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间。
其中,StartID2为非初始的业务标识区间的始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。在本申请的另一个优选实施方式中,如图7所示,该装置还包括:
保存单元505,用于将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
在本申请的另一个优选实施方式中,在图7所示的装置结构的基础上,如图8所示,该装置还包括:
判断单元506,用于在启动所述查询计算单元之前,判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识;
查询计算单元502具体用于,如果所述判断单元的判断结果为否,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于业务服务器的总个数。
在本申请的另一个优选实施方式中,在图8所示的装置结构的基础上,该装置还包括:读取单元,用于如果所述判断单元的判断结果为是,从所述业务标识区间中读取业务标识。
在本申请的另一个优选实施方式中,在图7所示的装置结构的基础上,该装置还包括:标识更新单元,用于利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
在本申请的一个优选实施方式中,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP地址的组合。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
为每个业务服务器分配一个只属于该业务服务器的业务标识生成器,也就是说,也一个业务标识生成器只为一个业务服务器提供生成业务标识的服务。如果某个业务标识生成器因出现故障而不可用,只会导致该业务标识生成器所属的某一个业务服务器无法为新创建的业务实例分配ID,进而无法完成业务处理,而并不会影响到其它的业务服务器的正常工作,显然,可以减小业务标识生成器的故障对业务的影响范围。
并且,每个业务标识生成器基于所属的业务服务器唯一的业务服务器标识生成业务标识区间,保证生成的业务标识区间是唯一的,而不会与其它业务标识生成器生成的业务标识区间重复。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上对本申请所提供的业务标识生成方法和装置进行了详细介绍,本文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种业务标识生成方法,其特征在于,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成器,所述方法包括:
a)、业务标识生成器接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;
b)、响应于所述消息,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;
c)、业务标识生成器按照StartID1=MaxID+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
d)、在生成了初始的业务标识区间之后,业务标识生成器按照StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间,其中,StartID2为非初始的业务标识区间的始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
e)、业务标识生成器将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
4.根据权利要求3所述的方法,其特征在于,在步骤b)之前,所述方法还包括:
b0)业务标识生成器判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识;
则所述步骤b)具体为,如果否,业务标识生成器查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于业务服务器的总个数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
f)、如果是,业务标识生成器从所述业务标识区间中读取业务标识。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
g)、业务标识生成器利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
7.根据权利要求1所述的方法,其特征在于,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP地址的组合。
8.一种业务标识生成装置,其特征在于,为多个业务服务器中的至少一个分配一个只属于所述业务服务器的业务标识生成装置,所述装置包括:
接收单元,用于接收请求获取业务标识的消息,所述消息携带有业务服务器标识和业务对象标识;
查询计算单元,用于响应于所述消息,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于分布式系统中的业务服务器的总个数;
第一生成单元,用于按照StartID1=MaxID1+M×Step计算初始的业务标识区间的起始值,并按照EndID1=StartID1+Step计算初始的业务标识区间的终止值,最终为所述目标业务对象生成初始的业务标识区间,其中,StartID1为初始的业务标识区间的起始值,EndID1为初始的业务标识区间的终止值,MaxID为业务标识最大值,M为取模计算值,Step为预设步长值。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二生成单元,用于在所述第一生成单元生成了初始的业务标识区间之后,StartID2=MaxID+A×Step计算非初始的业务标识区间的起始值,并按照EndID2=StartID2+Step计算非初始的业务标识区间的终止值,最终为所述目标业务对象生成非初始的业务标识区间,其中,StartID2为非初始的业务标识区间的始值,EndID2为非初始的业务标识区间的终止值,MaxID为业务标识最大值,A为预设阈值,Step为预设步长值。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
保存单元,用于将为所述目标业务对象生成的业务标识区间保存在所属的业务服务器的内存中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
判断单元,用于在启动所述查询计算单元之前,判断在所属的业务服务器的内存中是否保存有为所述目标业务对象生成的业务标识区间,且所述业务标识区间存在未使用的业务标识;
所述查询计算单元具体用于,如果所述判断单元的判断结果为否,查询所述业务对象标识指示的目标业务对象在当前的业务标识最大值,并对所述业务服务器标识进行哈希计算,利用哈希计算值对预设阈值进行取模计算,所述预设阈值大于或等于业务服务器的总个数。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
读取单元,用于如果所述判断单元的判断结果为是,从所述业务标识区间中读取业务标识。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
标识更新单元,用于利用所述业务标识区间的终止值更新所述目标业务对象在当前的业务标识最大值。
14.根据权利要求8所述的装置,其特征在于,所述业务服务器标识为业务服务器所在机房的机房名与业务服务器的IP地址的组合。
CN201410422055.1A 2014-08-25 2014-08-25 业务标识生成方法和装置 Active CN105447023B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410422055.1A CN105447023B (zh) 2014-08-25 2014-08-25 业务标识生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410422055.1A CN105447023B (zh) 2014-08-25 2014-08-25 业务标识生成方法和装置

Publications (2)

Publication Number Publication Date
CN105447023A true CN105447023A (zh) 2016-03-30
CN105447023B CN105447023B (zh) 2019-02-05

Family

ID=55557216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410422055.1A Active CN105447023B (zh) 2014-08-25 2014-08-25 业务标识生成方法和装置

Country Status (1)

Country Link
CN (1) CN105447023B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844690A (zh) * 2017-01-23 2017-06-13 北京齐尔布莱特科技有限公司 一种数据分配方法、装置和计算设备
CN106897335A (zh) * 2016-06-28 2017-06-27 阿里巴巴集团控股有限公司 一种业务数据的存储方法、记录标识符的生成方法及装置
CN106911780A (zh) * 2017-02-28 2017-06-30 北京三快在线科技有限公司 业务id生成方法、装置及系统
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN107320959A (zh) * 2017-06-28 2017-11-07 网易(杭州)网络有限公司 游戏角色标识信息生成方法、装置、介质和电子设备
CN108234580A (zh) * 2016-12-22 2018-06-29 珠海金山办公软件有限公司 一种唯一标识生成方法、装置及系统
CN108255882A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 数据查询方法及装置
CN108509433A (zh) * 2017-02-23 2018-09-07 北京京东金融科技控股有限公司 基于分布式系统的生成序列号的方法、装置及电子设备
CN108512914A (zh) * 2018-03-20 2018-09-07 北京奇艺世纪科技有限公司 一种业务id生成方法及装置
CN108710687A (zh) * 2018-05-21 2018-10-26 阿里巴巴集团控股有限公司 一种业务标识序列的获取方法和装置
CN109117422A (zh) * 2017-06-23 2019-01-01 中国软件与技术服务股份有限公司 一种大规模高并发系统中全局唯一号码快速生成方法及系统
CN109525658A (zh) * 2018-11-09 2019-03-26 广州虎牙科技有限公司 一种产号方法、服务器、设备、存储介质和业务系统
CN110109912A (zh) * 2018-01-15 2019-08-09 北京京东尚科信息技术有限公司 一种标识符生成方法和装置
CN110837499A (zh) * 2018-08-16 2020-02-25 阿里巴巴集团控股有限公司 数据访问处理方法、装置、电子设备和存储介质
CN111385370A (zh) * 2018-12-28 2020-07-07 广州市百果园信息技术有限公司 Id分配方法、装置、存储介质及id分配系统
CN112445822A (zh) * 2019-08-30 2021-03-05 拉扎斯网络科技(上海)有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN113377548A (zh) * 2020-03-10 2021-09-10 上海淘票儿信息科技有限公司 一种标识生成方法、装置、计算机设备、存储介质
CN113726830A (zh) * 2020-05-25 2021-11-30 网联清算有限公司 一种报文标识生成方法及装置
CN116610676A (zh) * 2023-05-25 2023-08-18 中电金信软件(上海)有限公司 一种分布式系统中标识的生成方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1662004A (zh) * 2004-02-27 2005-08-31 华为技术有限公司 一种实现会话发起协议应用服务器多业务处理的方法
US20080077629A1 (en) * 2006-09-26 2008-03-27 Lorenz Dean Har El System, Method and Computer Program Product for Managing Data Versions
CN101197754A (zh) * 2007-12-27 2008-06-11 腾讯科技(深圳)有限公司 分布式系统、分布式业务处理方法及相关装置
CN101997759A (zh) * 2009-08-10 2011-03-30 中兴通讯股份有限公司 一种业务实现方法及业务系统
CN102469033A (zh) * 2010-11-01 2012-05-23 阿里巴巴集团控股有限公司 一种消息订阅系统以及消息发送方法
CN103634347A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 一种并行业务处理方法、设备及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1662004A (zh) * 2004-02-27 2005-08-31 华为技术有限公司 一种实现会话发起协议应用服务器多业务处理的方法
US20080077629A1 (en) * 2006-09-26 2008-03-27 Lorenz Dean Har El System, Method and Computer Program Product for Managing Data Versions
CN101197754A (zh) * 2007-12-27 2008-06-11 腾讯科技(深圳)有限公司 分布式系统、分布式业务处理方法及相关装置
CN101997759A (zh) * 2009-08-10 2011-03-30 中兴通讯股份有限公司 一种业务实现方法及业务系统
CN102469033A (zh) * 2010-11-01 2012-05-23 阿里巴巴集团控股有限公司 一种消息订阅系统以及消息发送方法
CN103634347A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 一种并行业务处理方法、设备及系统

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897335A (zh) * 2016-06-28 2017-06-27 阿里巴巴集团控股有限公司 一种业务数据的存储方法、记录标识符的生成方法及装置
CN106897335B (zh) * 2016-06-28 2020-11-27 创新先进技术有限公司 一种业务数据的存储方法、记录标识符的生成方法及装置
CN108234580B (zh) * 2016-12-22 2021-08-20 珠海金山办公软件有限公司 一种唯一标识生成方法、装置及系统
CN108234580A (zh) * 2016-12-22 2018-06-29 珠海金山办公软件有限公司 一种唯一标识生成方法、装置及系统
CN108255882A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 数据查询方法及装置
CN106844690A (zh) * 2017-01-23 2017-06-13 北京齐尔布莱特科技有限公司 一种数据分配方法、装置和计算设备
CN106844690B (zh) * 2017-01-23 2019-07-02 北京齐尔布莱特科技有限公司 一种数据分配方法、装置和计算设备
CN108509433A (zh) * 2017-02-23 2018-09-07 北京京东金融科技控股有限公司 基于分布式系统的生成序列号的方法、装置及电子设备
CN106911780A (zh) * 2017-02-28 2017-06-30 北京三快在线科技有限公司 业务id生成方法、装置及系统
CN106911780B (zh) * 2017-02-28 2020-12-04 北京三快在线科技有限公司 业务id生成方法、装置及系统
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置
CN109117422A (zh) * 2017-06-23 2019-01-01 中国软件与技术服务股份有限公司 一种大规模高并发系统中全局唯一号码快速生成方法及系统
CN107320959B (zh) * 2017-06-28 2020-10-23 网易(杭州)网络有限公司 游戏角色标识信息生成方法、装置、介质和电子设备
CN107320959A (zh) * 2017-06-28 2017-11-07 网易(杭州)网络有限公司 游戏角色标识信息生成方法、装置、介质和电子设备
CN110109912A (zh) * 2018-01-15 2019-08-09 北京京东尚科信息技术有限公司 一种标识符生成方法和装置
CN108512914B (zh) * 2018-03-20 2021-07-23 北京奇艺世纪科技有限公司 一种业务id生成方法及装置
CN108512914A (zh) * 2018-03-20 2018-09-07 北京奇艺世纪科技有限公司 一种业务id生成方法及装置
CN108710687A (zh) * 2018-05-21 2018-10-26 阿里巴巴集团控股有限公司 一种业务标识序列的获取方法和装置
CN110837499A (zh) * 2018-08-16 2020-02-25 阿里巴巴集团控股有限公司 数据访问处理方法、装置、电子设备和存储介质
CN110837499B (zh) * 2018-08-16 2023-08-22 阿里巴巴集团控股有限公司 数据访问处理方法、装置、电子设备和存储介质
CN109525658A (zh) * 2018-11-09 2019-03-26 广州虎牙科技有限公司 一种产号方法、服务器、设备、存储介质和业务系统
CN111385370B (zh) * 2018-12-28 2022-07-08 广州市百果园信息技术有限公司 Id分配方法、装置、存储介质及id分配系统
CN111385370A (zh) * 2018-12-28 2020-07-07 广州市百果园信息技术有限公司 Id分配方法、装置、存储介质及id分配系统
CN112445822A (zh) * 2019-08-30 2021-03-05 拉扎斯网络科技(上海)有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN113377548A (zh) * 2020-03-10 2021-09-10 上海淘票儿信息科技有限公司 一种标识生成方法、装置、计算机设备、存储介质
CN113377548B (zh) * 2020-03-10 2024-05-14 上海淘票儿信息科技有限公司 一种标识生成方法、装置、计算机设备、存储介质
CN113726830A (zh) * 2020-05-25 2021-11-30 网联清算有限公司 一种报文标识生成方法及装置
CN113726830B (zh) * 2020-05-25 2023-09-12 网联清算有限公司 一种报文标识生成方法及装置
CN116610676A (zh) * 2023-05-25 2023-08-18 中电金信软件(上海)有限公司 一种分布式系统中标识的生成方法、装置、设备及介质

Also Published As

Publication number Publication date
CN105447023B (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
CN105447023A (zh) 业务标识生成方法和装置
CN106789362B (zh) 一种设备管理方法及网管系统
CN104539743B (zh) 一种云计算系统及其控制方法
CN106209353A (zh) 密钥管理方法及其系统
CN103078741B (zh) 一种rfid双向认证协议方法
CN102215123B (zh) 基于多环网络拓扑结构的大规模集群系统
CN103414589B (zh) 一种管理资源信息的方法及装置
US11122108B2 (en) End-to-end file transmission method and system thereof
CN105337941A (zh) 一种设备标识提供方法及装置
CN105577420A (zh) 自动产生伺服器网络拓扑的方法与系统
CN106953943B (zh) 适用于交换机通信的方法及装置
CN105516284B (zh) 一种集群数据库分布式存储的方法和装置
CN102957624B (zh) 内容路由方法和装置
CN104683161A (zh) 基于SaaS的网络管理方法及装置
CN104536405A (zh) 空调机组的远程监控系统
CN106973125A (zh) 域名解析实现方法及装置
CN110910143A (zh) 身份标识生成方法、装置、相关节点及介质
CN105847352A (zh) 基于分布式缓存系统的扩容方法、装置及分布式缓存系统
CN108512684A (zh) 固件升级方法和系统以及固件升级管理装置
CN101136747B (zh) 一种信息验证的系统及方法
CN108206843B (zh) 一种集群访问方法及装置
CN108429641A (zh) 一种网络设备管理方法及装置
CN112135297A (zh) 物联网的通信方法、中心服务器、设备及介质
CN106257865A (zh) 设备管理方法、装置及系统
CN112804099A (zh) 参数批量配置方法、装置、计算机设备和可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240221

Address after: # 01-21, Lai Zan Da Building 1, 51 Belarusian Road, Singapore

Patentee after: Alibaba Singapore Holdings Ltd.

Country or region after: Singapore

Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox

Patentee before: ALIBABA GROUP HOLDING Ltd.

Country or region before: Cayman Islands