CN110543518A - 一种分布式id生成方法、装置、设备及存储介质 - Google Patents
一种分布式id生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110543518A CN110543518A CN201910794781.9A CN201910794781A CN110543518A CN 110543518 A CN110543518 A CN 110543518A CN 201910794781 A CN201910794781 A CN 201910794781A CN 110543518 A CN110543518 A CN 110543518A
- Authority
- CN
- China
- Prior art keywords
- bit
- digit
- sign
- serial
- demand
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Abstract
本发明实施例提供了一种分布式唯一识别号码ID生成方法、装置、设备及存储介质,其中,该方法可以包括:确定ID需求预估量;根据需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;生成包括符号位、时间戳位、工作机器位和序列号位的ID。本发明实施例中,可以根据不同的ID需求预估量,动态地确定符号位数、时间戳位数、工作机器位数和序列号位数,根据ID的实际需求,确定满足需求的ID,且能够避免对ID的浪费,以及控制ID生成速度的快速增长。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种分布式ID(Identity,唯一识别号码)生成方法、装置、设备及存储介质。
背景技术
在分布式系统中,经常需要使用全局唯一数字ID定义对应的数据。如业务系统中为每一订单分配唯一的订单号,该订单号可以理解为订单对应的ID。该ID基本需求包括以下几点:1、全局唯一;2、占用相对较少,方便将ID进行存储,方便索引;3、时间友好,方便业务查询;4、性能高,可用性高。
为了满足分布式系统中对ID的需求,提供生成分布式ID的方式是很重要的方面。
发明内容
本发明实施例的目的在于提供一种分布式ID生成方法、装置、设备及存储介质,以实现根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数,根据ID的实际需求,确定满足需求的ID。具体技术方案如下:
第一方面,本发明实施例提供了一种分布式唯一识别号码ID生成方法,包括:
确定ID需求预估量;
根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;
生成包括所述符号位、所述时间戳位、所述工作机器位和所述序列号位的ID,其中,所述符号位的位数为所述符号位数、所述时间戳位的位数为所述时间戳位数、所述工作机器位的位数为所述工作机器位数和所述序列号位的位数为所述序列号位数。
可选的,所述预设限制规则包括:所述符号位数、所述时间戳位数、所述工作机器位数和所述序列号位数的总位数固定不变,所述符号位、所述时间戳位、所述工作机器位和所述序列号位之间的顺序固定不变;其中,所述符号位数为预先设定的;
所述根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数,包括:
根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数;
将所述总位数,与预先设定的所述符号位数、满足所述预设限制规则的所述工作机器位数和所述序列号位数的差值,作为时间戳位的时间戳位数。
可选的,当所述需求预估量发生变化时,所述预设限制规则还包括:根据变化后的需求预估量确定的所述工作机器位数和所述序列号位数之和,大于根据变化前的需求预估量确定的所述工作机器位数和所述序列号位数之和。
可选的,所述需求预估量是每秒所需的ID需求预估量;
所述根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数,包括:
根据所述每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量;
当所述每毫秒所需的ID预估需求量是2的N次方的值时,将所述N作为所述工作机器位数和所述序列号位数之和,并将所述N分配给所述工作机器位数和所述序列号位数,所述N为正整数;
当所述每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于所述每毫秒所需的ID预估需求量,且与所述每毫秒所需的ID需求预估量最接近的2的M次方的值时;将所述M作为所述工作机器位数和所述序列号位数之和,并将所述M分配给所述工作机器位数和所述序列号位数,所述M为正整数。
可选的,所述分布式唯一识别号码ID是基于雪花SnowFlake算法生成的。
第二方面,本发明实施例提供了一种分布式唯一识别号码ID生成装置,包括:
第一确定模块,用于确定ID需求预估量;
第二确定模块,用于根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;
生成模块,用于生成包括所述符号位、所述时间戳位、所述工作机器位和所述序列号位的ID,其中,所述符号位的位数为所述符号位数、所述时间戳位的位数为所述时间戳位数、所述工作机器位的位数为所述工作机器位数和所述序列号位的位数为所述序列号位数。
可选的,所述预设限制规则包括:所述符号位数、所述时间戳位数、所述工作机器位数和所述序列号位数的总位数固定不变,所述符号位、所述时间戳位、所述工作机器位和所述序列号位之间的顺序固定不变;其中,所述符号位数为预先设定的;
所述第二确定模块,具体用于根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数;将所述总位数,与预先设定的所述符号位数、满足所述预设限制规则的所述工作机器位数和所述序列号位数的差值,作为时间戳位的时间戳位数。
可选的,当所述需求预估量发生变化时,所述预设限制规则还包括:根据变化后的需求预估量确定的所述工作机器位数和所述序列号位数之和,大于根据变化前的需求预估量确定的所述工作机器位数和所述序列号位数之和。
可选的,所述需求预估量是每秒所需的ID需求预估量;
所述第二确定模块,具体用于根据所述每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量;当所述每毫秒所需的ID预估需求量是2的N次方的值时,将所述N作为所述工作机器位数和所述序列号位数之和,并将所述N分配给所述工作机器位数和所述序列号位数,所述N为正整数;当所述每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于所述每毫秒所需的ID预估需求量,且与所述每毫秒所需的ID需求预估量最接近的2的M次方的值时;将所述M作为所述工作机器位数和所述序列号位数之和,并将所述M分配给所述工作机器位数和所述序列号位数,所述M为正整数。
可选的,所述分布式唯一识别号码ID是基于雪花SnowFlake算法生成的。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现第一方面所述的方法步骤。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面所述的方法步骤。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面所述的方法步骤。
本发明实施例提供的分布式ID生成方法、装置、设备及存储介质,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的分布式ID生成方法的流程示意图;
图2为SnowFlake算法中ID的结构示意图;
图3为本发明实施例中生成ID的一种结构示意图;
图4为本发明实施例中生成ID的另一种结构示意图;
图5为本发明实施例提供的分布式ID生成装置的结构示意图;
图6为本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例提供的分布式ID生成方法可以应用于电子设备中,具体地可以在电子设备中部署发号系统,发号系统用于实现本发明实施例提供的该分布式ID生成方法。
本发明实施例提供了一种分布式ID生成方法,如图1所示,可以包括:
S101,确定ID需求预估量。
不同的业务系统的业务量有可能不同,故不同的业务系统对ID的需求量也是不同的。同一业务系统在不同的时间范围的业务量有可能也不同,故同一业务系统在不同的时间范围对ID的需求量也是不相同的。
本发明实施例中可以根据业务系统的业务量确定对ID的需求预估量。可以在不同时间范围内预估业务量,以确定不同时间范围内的ID需求预估量。
一种可实现方式中,可以根据历史时间范围内最高峰业务量确定ID需求预估量。如根据业务系统的最高峰订单量确定ID需求预估量,如业务系统的最高峰订单量为每秒4万个订单,则可以确定ID需求预估量为每秒4万个ID,或者每秒大于4万个ID,等等。
S102,根据需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。
ID可以包括符号位、时间戳位、工作机器位和序列号位。
预设限制规则用于限定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。
预设限制规则可以包括对符号位、时间戳位、工作机器位和序列号位的位数等的限定,以保证按照该预设限制规则生成的ID能够满足全局唯一性、不重复性。
S103,生成包括符号位、时间戳位、工作机器位和序列号位的ID。
其中,符号位的位数为符号位数、时间戳位的位数为时间戳位数、工作机器位的位数为工作机器位数和序列号位的位数为序列号位数。
确定符号位数、时间戳位数、工作机器位数和序列号位数后,可以生成符号位的位数为该符号位数、时间戳位的位数为该时间戳位数、工作机器位的位数为该工作机器位数和序列号位的位数为该序列号位数的ID。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。避免在需求量较少时对ID的浪费,以及控制ID生成速度的快速增长。
一种可选的实施例中,预设限制规则可以包括:符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,符号位、时间戳位、工作机器位和序列号位之间的顺序固定不变,符号位数为预先设定的。
步骤S102:根据需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数,可以包括:
A1,根据需求预估量,确定满足预设限制规则的工作机器位数和序列号位数。
需求预估量可以是每秒所需的ID需求预估量。
具体地,可以包括:
A11,根据每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量。
例如,ID需求预估量为4万个/每秒,则可以将4万除以1000=40,即计算每毫秒所需的ID需求预估量为40个/每毫秒。
例如,ID需求预估量为6.4万个/每秒,则可以将6.4万除以1000=64,即计算每毫秒所需的ID需求预估量为64个/每毫秒。
A12,当每毫秒所需的ID预估需求量是2的N次方的值时,将N作为工作机器位数和序列号位数之和,并将N分配给工作机器位数和序列号位数,N为正整数。
如计算得到每毫秒所需的ID需求预估量为64个/每毫秒,64是2的6次方,则将6作为工作机器位数和序列号位数之和,即工作机器位数和序列号位数之和为6。并将6分配给工作机器位数和序列号位数,即在保证工作机器位数和序列号位数之和为6的基础上,确定工作机器位数和序列号位数,如工作机器位数为2,序列号位数为4。
具体地,在确定工作机器位数和序列号位数之和后,确定工作机器位数和序列号位数过程中,可以根据工作机器的个数,首先确定工作机器位数,然后将工作机器位数和序列号位数之和减去工作机器位数得到序列号位数。
根据工作机器的个数确定工作机器位数的过程中,在工作机器位数能够表示的数的个数不小于工作机器的个数的基础上确定。如ID需求预估量为4万个/每秒,计算每毫秒所需的ID需求预估量为40个/每毫秒,对应地确定工作机器位数和序列号位数之和为6。一种可实现方式中,分布式系统中包括4个节点,因为2的2次方为4,即通过2位的工作机器位可以表示不少于4个工作机器,则可以确定工作机器位数为2位,如此,可以确定序列号位数为6位减去2位,即为4位。
A13,当每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于每毫秒所需的ID预估需求量,且与每毫秒所需的ID需求预估量最接近的2的M次方的值时;将M作为工作机器位数和序列号位数之和,并将M分配给工作机器位数和序列号位数,M为正整数。
如计算得到每毫秒所需的ID需求预估量为40个/每毫秒,40不是2的N次方,则先确定大于40,且与40最接近的2的M次方的值,即64。64为2的6次方的值,则将6作为工作机器位数和序列号位数之和,即工作机器位数和序列号位数之和为6。并将6分配给工作机器位数和序列号位数,即在保证工作机器位数和序列号位数之和为6的基础上,确定工作机器位数和序列号位数,如工作机器位数为2,序列号位数为4。
A2,将总位数,与预先设定的符号位数、满足预设限制规则的工作机器位数和序列号位数的差值,作为满足预设限制规则的时间戳位数。
本发明实施例中,符号位数、时间戳位数、工作机器位数和序列号位数的总位数是固定不变的,即总位数是固定不变的值,且符号位数为预先设定的。当工作机器位数和序列号位数确定,即可确定时间戳位数。
本发明实施例提供的分布式ID生成方法可以根据业务系统等对ID的实际需求,动态调整ID的生成速度、控制ID的快速增长,尽可能的延长ID的使用年限。
一种可选的实施例中,可以基于雪花SnowFlake算法生成ID。
分布式ID生成算法有很多种,Twitter的SnowFlake(雪花)算法是其中经典的一种。SnowFlake算法生成的ID是一个64bit(位)的二进制的整数,如图2所示,包括1bit的符号位,41bit的时间戳位,10bit的工作机器位和12bit的序列号位。
其中,1bit的符号位,不用,即没有实际含义。二进制中最高位为1的都是负数,而ID一般都使用整数,因此该符号位一般是0。
41bit的时间戳位,用于记录毫秒级的时间戳。41bit可以表示2^41-1个数字,如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0至2^41-1,其中,减1是因为可表示的数值范围是从0开始计算,而不是1。也就是说,41bit的时间戳位可以表示2^41-1个毫秒的值,转化成单位年则是(2^41-1)/(1000*60*60*24*365)=69年。
10bit的工作机器位,用于记录工作机器ID。可以部署在2^10=1024个工作机器,如节点,包括5bit的datacenterId和5bit的workerId。5bit可以表示的最大正整数是2^5-1=31,即可以用0、1、2、3、....31这32个数字,来表示不同的datecenterId(机房ID)或workerId(机器ID)。一种可实现方式中,如果有多个机房,那么一个机房里会有多台机器,每个机房的机器都是从1开始编码。
计算机中长整型的数字是由64位的二进制数来表示,通过改变这64位二进制数来生成新的长整型ID。如12bit的序列号位,即12位的0或1有2^12=4096种组合,这些组合可以表示同一工作机器在同一时间戳(毫秒)内产生的4096个ID。10bit的工作机器位,有2^10=1024种组合,可以标记1024台机器。工作机器位和序列号位之和为22位,有2^22=4194304种组合,即有表示1024台机器,每台机器每毫秒产生4096个不重复的ID,总共每毫秒共能产生1024*4096=4194304个ID。
上线1秒后生成的ID是10位,例如:4196401153;上线1天后是15位,例如:362387867697153;上线1年后是18位,例如:132271570946097153;10年~69年是19位。例如:1322715709442097153。
其中,上线1秒后产生的ID是10位的计算方法:例如:ID为4196356000。
1、41位时间戳:
比如:1秒等于1000毫秒,1000转为二进制是1111101000,左边补31个0凑够41位00000000000000000000000000000001111101000。
2、10bit机器位,可以标记1024台机器:
比如:第999台机器的二进制为111110100,左边补一个0凑够10位:0111110100。
3、12bit序列号位,可以有4096个组合:
比如:第4000个,4000转为二进制位111110100000,已经满12位,不需要用0补位。
4、把3段二进制拼接在一起,形成一个63位的二进制数:
000000000000000000000000000000011111010000111110100111110100000,转为10进制为4196356000。
目前通用方案中,直接根据1bit的符号位,41bit的时间戳位,10bit的工作机器位和12bit的序列号位生成ID,64位每一位所表示的含义是固定的,ID的生产速度固定,即每毫秒生成的ID个数是固定的,使用年限固定,长度也基本固定。但是实际应用中,业务系统初期业务量一般比较小,对ID的需求量也比较小,如果通过现有的方式生成ID时,则会造成ID的浪费以及ID长度的迅速增长。分布式ID生成算法有很多种,Twitter的SnowFlake(雪花)算法是其中经典的一种。SnowFlake算法生成的ID是一个64bit(位)的二进制的整数,如图1所示,包括1bit的符号位,41bit的时间戳位,10bit的工作机器位和12bit的序列号位。
其中,1bit的符号位,不用,即没有实际含义。二进制中最高位为1的都是负数,而ID一般都使用整数,因此该符号位一般是0。
41bit的时间戳位,用于记录毫秒级的时间戳。41bit可以表示241-1个数字,如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0至241-1,其中,减1是因为可表示的数值范围是从0开始计算,而不是1。也就是说,41bit的时间戳位可以表示241-1个毫秒的值,转化成单位年则是(241-1)/(1000*60*60*24*365)=69年。
10bit的工作机器位,用于记录工作机器ID。可以部署在210=1024个工作机器,如节点,包括5bit的datacenterId和5bit的workerId。5bit可以表示的最大正整数是25-1=31,即可以用0、1、2、3、....31这32个数字,来表示不同的datecenterId(机房ID)或workerId(机器ID)。一种可实现方式中,如果有多个机房,那么一个机房里会有多台机器,每个机房的机器都是从1开始编码。
计算机中长整型的数字是由64位的二进制数来表示,通过改变这64位二进制数来生成新的长整型ID。如12bit的序列号位,即12位的0或1有212=4096种组合,这些组合可以表示同一工作机器在同一时间戳(毫秒)内产生的4096个ID。10bit的工作机器位,有210=1024种组合,可以标记1024台机器。工作机器位和序列号位之和为22位,有222=4194304种组合,即有表示1024台机器,每台机器每毫秒产生4096个不重复的ID,总共每毫秒共能产生1024*4096=4194304个ID。
上线1秒后生成的ID是10位,例如:4196401153;上线1天后是15位,例如:362387867697153;上线1年后是18位,例如:132271570946097153;10年~69年是19位。例如:1322715709442097153。
其中,上线1秒后产生的ID是10位的计算方法:例如:ID为4196356000。
1、41位时间戳:
比如:1秒等于1000毫秒,1000转为二进制是1111101000,左边补31个0凑够41位00000000000000000000000000000001111101000。
2、10bit机器位,可以标记1024台机器:
比如:第999台机器的二进制为111110100,左边补一个0凑够10位:0111110100。
3、12bit序列号位,可以有4096个组合:
比如:第4000个,4000转为二进制位111110100000,已经满12位,不需要用0补位。
4、把3段二进制拼接在一起,形成一个63位的二进制数:
000000000000000000000000000000011111010000111110100111110100000,转为10进制为4196356000。
可以直接根据1bit的符号位,41bit的时间戳位,10bit的工作机器位和12bit的序列号位生成ID,64位每一位所表示的含义是固定的,ID的生产速度固定,即每毫秒生成的ID个数是固定的,使用年限固定,长度也基本固定。但是实际应用中,业务系统初期业务量一般比较小,对ID的需求量也比较小,如果通过现有的方式生成ID时,则会造成ID的浪费以及ID长度的迅速增长。
本发明实施例一种可选的实现方式中,基于SnowFlake算法生成ID。预设限制规则中保持SnowFlake算法中符号位、时间戳位、工作机器位和序列号位的位数的总位数为64位,以及符号位数为1位。根据需求预估量,确定满足预设限制规则的工作机器位数和序列号位数。将总位数,与预先设定的符号位数、满足预设限制规则的工作机器位数和序列号位数的差值,作为满足预设限制规则的时间戳位数。即动态地调整工作机器位数、序列号位数以及时间戳位数。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。
一种可选的实施例中,预设限制规则还可以包括:工作机器位数和序列号位数之和不大于预设位数,预设位数用于限制时间戳位数能够保证时间使用要求。即预设限制规则中可以对工作机器位数和序列号位数之和进一步限定。
工作机器位数和序列号位数之和不大于预设位数,即可以保证时间戳位数不小于满足时间使用要求的位数。
本发明实施例中,预先限制规则限定符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,符号位、时间戳位、工作机器位和序列号位之间的顺序固定不变,符号位数为预先设定的,则工作机器位数和序列号位数之和直接影响时间戳位数,简单理解,当工作机器位数和序列号位数之和较大时,则时间戳位数较小;而工作机器位数和序列号位数之和较小时,则时间戳位数较大。为了使时间戳位数能够保证时间使用要求,如最少使用69年,则可以限定工作机器位数和序列号位数之和不大于预设位数。
一种可实现方式中,本发明实施例中基于SnowFlake算法生成ID,本发明实施例中时间戳位数最少为41位,SnowFlake算法中限定符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,且为64位,符号位为1位,为了保证生成的ID的使用年限不低于已有方式中时间戳位数为固定的41位时生成的ID可以使用69年不重复,预设位数为21位,即工作机器位数和序列号位数之和不大于21位。如此,可以保证在保证ID需求量的前提下,尽量延长ID的使用年限。
业务系统等在不同时间范围的业务量有可能也不同,如随着业务发展,业务量逐渐增多,相应地对ID的需求量也会增加。本发明一种可选的实施例中,随着业务量的等的变化,ID需求预估量也会相应地发生变化,即可以根据业务量等的变化,调整ID需求预估量。可以根据变化后的需求预估量,也可以理解为调整后的需求预估量,通过预设限制规则生成ID。
当需求预估量发生变化时,预设限制规则还包括:根据变化后的需求预估量确定的工作机器位数和序列号位数之和,大于根据变化前的需求预估量确定的工作机器位数和序列号位数之和。
如此,可以保证根据变化后的需求预估量确定的ID不会与根据变化前的需求预估量确定的ID生成的ID的重复,如此可以保证ID的唯一性。
即根据变化后的需求预估量确定ID时,所采用的预设限制规则包括:符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,符号位、时间戳位、工作机器位和序列号位之间的顺序固定不变,符号位数为预先设定的。且根据变化后的需求预估量确定的工作机器位数和序列号位数之和,大于根据变化前的需求预估量确定的工作机器位数和序列号位数之和。
具体地,根据变化后的需求预估量确定ID的过程参照上述实施例中步骤S102这里不再赘述。
一种可选的实施例中,基于SnowFlake算法生成ID。即在已有SnowFlake算法各个部分位数均固定的基础上进行改进。具体地,符号位数、时间戳位数、工作机器位数和序列号位数的总位数保持SnowFlake算法的位数,即符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,且为64位。符号位、时间戳位、工作机器位和序列号位之间的顺序固定不变,符号位数为预先设定的,即首位设定为符号位,且符号位数为1位。
具体地,预设限制规则可以包括:
其中,Yn表示根据变化后的需求预估量确定的工作机器位数,Zn表示根据变化后的需求预估量确定的序列号位数,Yn-1表示根据变化前的需求预估量确定的工作机器位数,Zn-1表示根据变化前的需求预估量确定的序列号位数,S表示符号位,Xn表示根据变化后的需求预估量确定的时间戳位数。
可以根据变化后的业务量等确定该调整后的需求预估量。
本发明实施例中发号系统可以实时将生成的ID提供给业务系统等使用,也可以将生成的ID保存,业务系统获取保存的ID以使用。且在提供给业务系统等ID时,可以将二进制数表示的ID转换为十进制数表示的ID,工作机器位数和序列号位数小,则转换后的ID的长度短。如此,本发明实施例中在保存ID时,可以降低对存储资源资源的利用,节省存储成本。
本发明一种可选的实施例中,还可以包括:
记录符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。
每次调整之后上线,需要记录上线时间及调整后的各部分的位数,用于ID反解。
ID反解一般是发号系统提供的功能。
一个具体的例子如下:
例如,ID为4196356000,已知该ID的组成为41位时间戳,10bit机器位,12bit序列号位,发号系统首次上线时间为2019年6月1日12点20分20秒。通过ID反解可以知道ID是什么时间点生成的,是由哪台机器生成的。
4196356000转二进制位为:
11111010000111110100111110100000。
左边补0,直到满63位:
000000000000000000000000000000011111010000111110100111110100000。
1、从左往右截取41位作为时间位:
00000000000000000000000000000001111101000;
转为十进制为1000,表明是系统上线后第1000毫秒产生的,即2019年6月1日12点20分21秒。
2、从左往右数,从第41位开始截取10位,这10位就是机器位0111110100,转为十进制为500,表示是编号为500的那台机器生产的。
通过记录上线时间及调整后的各部分的位数,就可以推导出某个大小范围内的ID使用的是哪种位数配比。例如,4196356000就能推算出是41-10-12这种位数配置,即41位时间戳、10位机器位,12位序列号位。
本发明实施例还提供一个具体实施例。
本实施例中,通过发号系统生成ID。发号系统第一期上线,预估的ID需求量为4万/每秒,即可以确定ID需求预估量为4万个/每秒。可以计算每毫秒所需的ID需求预估量为40个/每毫秒。根据上述实施例提供的方式,可以确定工作机器位数和序列号位数之和为6。
根据预设限制规则对各部分位数的限定,符号位数、时间戳位数、工作机器位数和序列号位数之和为64位,以符号位数为1位。工作机器位数和序列号位数小于等于21位。确定工作机器位数为2bit(位),序列号位数为4bit(位),符号位数为1(位),可以确定时间戳位数为57bit(位),具体地格式如图3所示。
工作机器位数和序列号位数之和为6位,因此,每毫秒可生成26=64个ID,则每秒可生成64×1000=6.4W(万个)ID,可供使用 年。
如此,在保证ID需求量的基础上,相比较于已有技术中可使用69年,延长了ID的使用年限。
发号系统初始生成的ID是各个符号位通过二进制表示的,在提供给业务系统使用时,为了提高ID的可读性等,一般将二进制表示的ID进行转换。如第1毫秒内,生成的ID符号位以及时间戳位的值均为0,该1毫秒内生成的ID转换为十进制表示的值为0,1,2,…,63,上线1毫秒内生成的ID是1位至2位,上线1秒后生成的ID是5位,例如:64000;上线1天后生成的ID是10位,例如:5529600000;上线1年后生成的ID是13位,例如:2018304000000;上线69年ID是15位,例如:139262976000000。
发号系统第一期使用1年后时间为31536000000毫秒,转为二进制为:
11101010111101100010010110000000000,
拼上工作机器位和序列号位,高位补全到64位,如下:
0000000000000000000000011101010111101100010010110000000000111111
转为long型ID为2018304000063。
随着业务的发展,业务系统所需的ID需求量增加,发号系统上线1年后对发号系统进行升级,发号系统第二期上线,预估的ID需求量为40万/每秒,即可以确定ID需求预估量为40万个/每秒。
如此,可以根据确定的调整后的需求预估量,通过预设限制规则生成ID。
可以确定每毫秒所需的ID需求预估量为400个/每毫秒。400不是2的N次方,则先确定大于400,且与400最接近的2的M次方的值,即512。512为2的9次方的值,则将9作为工作机器位数和序列号位数之和,即工作机器位数和序列号位数之和为9。
一种可选的实现方式中,符号位数、时间戳位数、工作机器位数和序列号位数之和为64位,以符号位数为1位。工作机器位数和序列号位数小于等于21位。且根据变化后的需求预估量确定的工作机器位数和序列号位数之和大于根据变化前的工作机器位数和序列号位数之和,也可以理解为调整后的工作机器位数和序列位数之和大于调整前的工作机器位数和序列位数之和,可以确定工作机器位数为3bit(位),序列号位数为6bit(位),符号位数为1(位),可以确定时间戳位数为54bit(位),具体地格式如图4所示。
工作机器位数和序列号位数之和为9位,因此,每毫秒可生成29=512个ID,则每秒可生成512×1000=51.2W(万个)ID,可供使用 年。
如此,在保证ID需求量的基础上,相比较于已有技术中可使用69年,延长了ID的使用年限。
发号系统初始生成的ID是各个符号位通过二进制表示的,在提供给业务系统使用时,为了提高ID的可读性等,一般将二进制表示的ID进行转换。如第1毫秒内,生成的ID符号位以及时间戳位的值均为0,该1毫秒内生成的ID转换为十进制表示的值为0,1,2,…,511,上线1毫秒内生成的ID是1位至3位。
上线1秒后生成的ID为:
0000000000000000000011101010111101100010010110000000000111111111
转为long型ID为16146432000511;上线1天后生成的ID是14位,例如:32292864000511;上线1年后生成的ID是14位,例如:32292864000511;上线10年后生成的ID是15位,例如:161464320000511;上线69年ID是16位,例如:1114103808000511。
本发明实施例中,生成ID的过程中时间戳位数、工作机器位数以及序列号位数不固定,可以根据业务发展动态调整,如此,可以在业务量等较小的情况下,即ID需求量较小的情况下,可以确定较小的工作机器位数以及序列号位数,而当业务量增加的情况下,即ID需求量增加的情况下,可以确定较大的工作机器位数以及序列号位数,如此可以控制ID长度的快速增长。
且本发明实施例中时间戳位数、工作机器位数以及序列号位数之和与已有技术是相同的,而本发明实施例中确定的工作机器位数以及序列号位数相比较于已有技术中的工作机器位数以及序列号位数较小时,则本发明实施例中时间戳位数相比较于已有技术中的时间戳位数更大,则可以延长发号系统的使用年限。
对应于上述实施例提供的分布式ID生成方法,本发明实施例还提供了一种分布式ID生成装置,如图5所示,可以包括:
第一确定模块501,用于确定ID需求预估量;
第二确定模块502,用于根据需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;
生成模块503,用于生成包括符号位、时间戳位、工作机器位和序列号位的ID,其中,符号位的位数为符号位数、时间戳位的位数为时间戳位数、工作机器位的位数为工作机器位数和序列号位的位数为序列号位数。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。且在保证ID需求量的前提下,尽量延长ID的使用年限。
可选的,预设限制规则包括:符号位数、时间戳位数、工作机器位数和序列号位数的总位数固定不变,符号位、时间戳位、工作机器位和序列号位之间的顺序固定不变,符号位数为预先设定的;
第二确定模块502,具体用于根据需求预估量,确定满足预设限制规则的工作机器位数和序列号位数;将总位数,与预先设定的符号位数、满足预设限制规则的工作机器位数和序列号位数的差值,作为满足预设限制规则的时间戳位数。
可选的,当需求预估量发生变化时,预设限制规则还包括:根据变化后的需求预估量确定的工作机器位数和序列号位数之和,大于根据变化前的需求预估量确定的工作机器位数和序列号位数之和。
可选的,需求预估量是每秒所需的ID需求预估量;
第二确定模块502,具体用于根据每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量;当每毫秒所需的ID预估需求量是2的N次方的值时,将N作为工作机器位数和序列号位数之和,并将N分配给工作机器位数和序列号位数,N为正整数;当每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于每毫秒所需的ID预估需求量,且与每毫秒所需的ID需求预估量最接近的2的M次方的值时;将M作为工作机器位数和序列号位数之和,并将M分配给工作机器位数和序列号位数,M为正整数。
可选的,分布式唯一识别号码ID是基于雪花SnowFlake算法生成的。
需要说明的是,本发明实施例提供的分布式ID生成装置是应用上述分布式ID生成方法的装置,则上述分布式ID生成方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
对应于上述实施例提供的分布式ID生成方法,本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现上述分布式ID生成方法的方法步骤。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。且在保证ID需求量的前提下,尽量延长ID的使用年限。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述分布式ID生成方法的方法步骤。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。且在保证ID需求量的前提下,尽量延长ID的使用年限。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述分布式ID生成方法的方法步骤。
本发明实施例中,可以根据不同的ID需求预估量,动态地确定ID中包括的符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数。如此,可以根据ID的实际需求,确定满足需求的ID,能够避免在需求量较少时,通过已有算法中各个部分位数固定的方式生成ID时对ID的浪费,以及控制ID生成速度的快速增长,如每毫秒生成的ID数量的增长。且在保证ID需求量的前提下,尽量延长ID的使用年限。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种分布式唯一识别号码ID生成方法,其特征在于,包括:
确定ID需求预估量;
根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;
生成包括所述符号位、所述时间戳位、所述工作机器位和所述序列号位的ID,其中,所述符号位的位数为所述符号位数、所述时间戳位的位数为所述时间戳位数、所述工作机器位的位数为所述工作机器位数和所述序列号位的位数为所述序列号位数。
2.根据权利要求1所述的方法,其特征在于,所述预设限制规则包括:所述符号位数、所述时间戳位数、所述工作机器位数和所述序列号位数的总位数固定不变,所述符号位、所述时间戳位、所述工作机器位和所述序列号位之间的顺序固定不变;其中,所述符号位数为预先设定的;
所述根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数,包括:
根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数;
将所述总位数,与预先设定的所述符号位数、满足所述预设限制规则的所述工作机器位数和所述序列号位数的差值,作为时间戳位的时间戳位数。
3.根据权利要求2所述的方法,其特征在于,当所述需求预估量发生变化时,所述预设限制规则还包括:根据变化后的需求预估量确定的所述工作机器位数和所述序列号位数之和,大于根据变化前的需求预估量确定的所述工作机器位数和所述序列号位数之和。
4.根据权利要求2所述的方法,其特征在于,所述需求预估量是每秒所需的ID需求预估量;
所述根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数,包括:
根据所述每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量;
当所述每毫秒所需的ID预估需求量是2的N次方的值时,将所述N作为所述工作机器位数和所述序列号位数之和,并将所述N分配给所述工作机器位数和所述序列号位数,所述N为正整数;
当所述每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于所述每毫秒所需的ID预估需求量,且与所述每毫秒所需的ID需求预估量最接近的2的M次方的值时;将所述M作为所述工作机器位数和所述序列号位数之和,并将所述M分配给所述工作机器位数和所述序列号位数,所述M为正整数。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述分布式唯一识别号码ID是基于雪花SnowFlake算法生成的。
6.一种分布式唯一识别号码ID生成装置,其特征在于,包括:
第一确定模块,用于确定ID需求预估量;
第二确定模块,用于根据所述需求预估量,通过预设限制规则确定符号位的符号位数、时间戳位的时间戳位数、工作机器位的工作机器位数和序列号位的序列号位数;
生成模块,用于生成包括所述符号位、所述时间戳位、所述工作机器位和所述序列号位的ID,其中,所述符号位的位数为所述符号位数、所述时间戳位的位数为所述时间戳位数、所述工作机器位的位数为所述工作机器位数和所述序列号位的位数为所述序列号位数。
7.根据权利要求6所述的装置,其特征在于,所述预设限制规则包括:所述符号位数、所述时间戳位数、所述工作机器位数和所述序列号位数的总位数固定不变,所述符号位、所述时间戳位、所述工作机器位和所述序列号位之间的顺序固定不变;其中,所述符号位数为预先设定的;
所述第二确定模块,具体用于根据所述需求预估量,确定满足所述预设限制规则的所述工作机器位数和所述序列号位数;将所述总位数,与预先设定的所述符号位数、满足所述预设限制规则的所述工作机器位数和所述序列号位数的差值,作为时间戳位的时间戳位数。
8.根据权利要求7所述的装置,其特征在于,当所述需求预估量发生变化时,所述预设限制规则还包括:根据变化后的需求预估量确定的所述工作机器位数和所述序列号位数之和,大于根据变化前的需求预估量确定的所述工作机器位数和所述序列号位数之和。
9.根据权利要求7所述的装置,其特征在于,所述需求预估量是每秒所需的ID需求预估量;
所述第二确定模块,具体用于根据所述每秒所需的ID需求预估量,计算每毫秒所需的ID需求预估量;当所述每毫秒所需的ID预估需求量是2的N次方的值时,将所述N作为所述工作机器位数和所述序列号位数之和,并将所述N分配给所述工作机器位数和所述序列号位数,所述N为正整数;当所述每毫秒所需的ID预估需求量不是2的N次方的值时,确定大于所述每毫秒所需的ID预估需求量,且与所述每毫秒所需的ID需求预估量最接近的2的M次方的值时;将所述M作为所述工作机器位数和所述序列号位数之和,并将所述M分配给所述工作机器位数和所述序列号位数,所述M为正整数。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述分布式唯一识别号码ID是基于雪花SnowFlake算法生成的。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由处理器执行时,使得处理器能够执行一种分布式唯一识别号码ID生成方法,实现如权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910794781.9A CN110543518B (zh) | 2019-08-27 | 2019-08-27 | 一种分布式id生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910794781.9A CN110543518B (zh) | 2019-08-27 | 2019-08-27 | 一种分布式id生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543518A true CN110543518A (zh) | 2019-12-06 |
CN110543518B CN110543518B (zh) | 2022-10-25 |
Family
ID=68710578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910794781.9A Active CN110543518B (zh) | 2019-08-27 | 2019-08-27 | 一种分布式id生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110543518B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111083228A (zh) * | 2019-12-24 | 2020-04-28 | 腾讯云计算(北京)有限责任公司 | 标识号的生成方法、装置和电子设备 |
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
CN112116113A (zh) * | 2020-09-11 | 2020-12-22 | 中国第一汽车股份有限公司 | 一种车辆预约方法、装置、设备及存储介质 |
CN112579566A (zh) * | 2020-12-14 | 2021-03-30 | 浪潮云信息技术股份公司 | 分布式id的生成方法及装置 |
CN113037756A (zh) * | 2021-03-10 | 2021-06-25 | 深圳力维智联技术有限公司 | 数据唯一标识的生成方法、装置、设备及可读存储介质 |
CN113596193A (zh) * | 2021-07-27 | 2021-11-02 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5608903A (en) * | 1994-12-15 | 1997-03-04 | Novell, Inc. | Method and apparatus for moving subtrees in a distributed network directory |
US20060156087A1 (en) * | 2005-01-12 | 2006-07-13 | Lin Xintian E | Bit distributor for multicarrier communication systems employing adaptive bit loading for multiple spatial streams and methods |
US20090271434A1 (en) * | 2008-04-29 | 2009-10-29 | George H Allan | Method and System for Storing Trace Data |
CN103823810A (zh) * | 2012-11-19 | 2014-05-28 | 中国电信股份有限公司 | 一种在分布式系统中生成唯一键的方法、装置及系统 |
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN105404953A (zh) * | 2015-10-23 | 2016-03-16 | 努比亚技术有限公司 | 一种标识生成方法和装置 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN107515919A (zh) * | 2017-08-21 | 2017-12-26 | 黑龙江然得基尔医学科技发展有限公司 | 一种包含分类信息的id编号方法 |
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
-
2019
- 2019-08-27 CN CN201910794781.9A patent/CN110543518B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5608903A (en) * | 1994-12-15 | 1997-03-04 | Novell, Inc. | Method and apparatus for moving subtrees in a distributed network directory |
US20060156087A1 (en) * | 2005-01-12 | 2006-07-13 | Lin Xintian E | Bit distributor for multicarrier communication systems employing adaptive bit loading for multiple spatial streams and methods |
US20090271434A1 (en) * | 2008-04-29 | 2009-10-29 | George H Allan | Method and System for Storing Trace Data |
CN103823810A (zh) * | 2012-11-19 | 2014-05-28 | 中国电信股份有限公司 | 一种在分布式系统中生成唯一键的方法、装置及系统 |
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN105404953A (zh) * | 2015-10-23 | 2016-03-16 | 努比亚技术有限公司 | 一种标识生成方法和装置 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN107515919A (zh) * | 2017-08-21 | 2017-12-26 | 黑龙江然得基尔医学科技发展有限公司 | 一种包含分类信息的id编号方法 |
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
Non-Patent Citations (4)
Title |
---|
LU CHEN ETC.: "Real-time distributed co-movement pattern detection on streaming trajectories", 《PROCEEDINGS OF THE VLDB ENDOWMENT》 * |
岳欣: "《现代通信系统导论(第2版)》", 31 January 2012 * |
陈琳等: "多信息分段电子编码方法和系统", 《计算机应用》 * |
高翔: "基于分布式ID的物联网标识设计与实现", 《中小企业管理与科技》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111083228A (zh) * | 2019-12-24 | 2020-04-28 | 腾讯云计算(北京)有限责任公司 | 标识号的生成方法、装置和电子设备 |
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
CN112116113A (zh) * | 2020-09-11 | 2020-12-22 | 中国第一汽车股份有限公司 | 一种车辆预约方法、装置、设备及存储介质 |
CN112579566A (zh) * | 2020-12-14 | 2021-03-30 | 浪潮云信息技术股份公司 | 分布式id的生成方法及装置 |
CN112579566B (zh) * | 2020-12-14 | 2023-03-31 | 浪潮云信息技术股份公司 | 分布式id的生成方法及装置 |
CN113037756A (zh) * | 2021-03-10 | 2021-06-25 | 深圳力维智联技术有限公司 | 数据唯一标识的生成方法、装置、设备及可读存储介质 |
CN113596193A (zh) * | 2021-07-27 | 2021-11-02 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
CN113596193B (zh) * | 2021-07-27 | 2024-01-16 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110543518B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543518B (zh) | 一种分布式id生成方法、装置、设备及存储介质 | |
CN105264509A (zh) | 融合网络中的自适应中断联合 | |
CN110554732A (zh) | 一种标识号生成方法、生成装置、电子设备及存储介质 | |
CN107025137B (zh) | 一种资源查询方法及装置 | |
CN110599148B (zh) | 集群数据处理方法、装置、计算机集群及可读存储介质 | |
CN115081960B (zh) | 区域空心率信息生成方法、装置、电子设备和计算机介质 | |
CN109951541A (zh) | 一种流水号生成方法及服务器 | |
CN112468406B (zh) | 流量阈值的确定方法及装置 | |
CN104899079A (zh) | 一种数据处理的方法及装置 | |
CN111695847A (zh) | 物流电子面单的号段管理方法及系统、设备及存储介质 | |
CN112799584A (zh) | 一种数据存储方法及装置 | |
CN112818387A (zh) | 模型参数调整的方法、设备、存储介质及程序产品 | |
CN115062877A (zh) | 电力设备材料信息调整方法、装置、设备和计算机介质 | |
CN103051480B (zh) | 一种dn的存储方法及dn存储装置 | |
CN104794128A (zh) | 数据处理方法和装置 | |
CN116932202A (zh) | 一种访存方法、处理器、电子设备及可读存储介质 | |
CN103428502A (zh) | 一种解码方法及解码系统 | |
CN113886305B (zh) | 一种基于总线的仲裁方法、系统、存储介质及设备 | |
CN115470241A (zh) | 一种基于映射字典表的聚合数据更新方法及装置 | |
CN115483934A (zh) | 用于多方安全计算的数据转换方法和装置 | |
CN106547642B (zh) | 一种数据存储备份的方法及装置 | |
CN113468442A (zh) | 资源位流量的分发方法、计算设备及计算机存储介质 | |
CN103338159A (zh) | 轮询调度实现方法和装置 | |
CN110460663B (zh) | 分布式节点间的数据分配方法、装置、服务器及存储介质 | |
CN113285890A (zh) | 网关流量的分配方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |