CN114143285A - 分布式系统中生成id的方法、装置及服务器 - Google Patents
分布式系统中生成id的方法、装置及服务器 Download PDFInfo
- Publication number
- CN114143285A CN114143285A CN202111275797.2A CN202111275797A CN114143285A CN 114143285 A CN114143285 A CN 114143285A CN 202111275797 A CN202111275797 A CN 202111275797A CN 114143285 A CN114143285 A CN 114143285A
- Authority
- CN
- China
- Prior art keywords
- sequence value
- generating
- time
- preset time
- distributed system
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3005—Mechanisms for avoiding name conflicts
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本申请实施例提供一种分布式系统中生成ID的方法、装置及服务器,该方法包括:接收用于生成ID的生成请求;根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值;根据预设时间、机器标识和第二序列值,生成ID。本申请实施例提供一种分布式系统中生成ID的方法、装置及服务器用于避免生成相同的ID,从而保障生成ID的全局唯一性。
Description
技术领域
本申请涉及分布式系统技术领域,尤其涉及一种分布式系统中生成ID的方法、装置及服务器。
背景技术
由于在分布式系统中,通常需要对大量的信息进行唯一标识。因此通常采用分布式系统中的节点产生的多个ID分别对多个信息进行标识,为了实现对多个信息进行唯一标识,通常需要使多个ID互不相同,保障ID的全局唯一性。
在相关技术中,为了使得节点的时间较为准确,通常需要对节点的当前时间进行校准,在校准之后可能存在时钟回拨现象,即对节点的当前时间进行校准之后,得到的校准时间在当前时间之前。当存在时钟回拨现象时,节点产生的多个ID中会存在相同的ID,无法保障ID的全局唯一性。
发明内容
本申请提供一种分布式系统中生成ID的方法、装置及服务器,用以解决当存在时钟回拨现象时,节点产生的多个ID中会存在相同的ID,无法保障ID的全局唯一性的问题。
第一方面,本申请提供一种分布式系统中生成ID的方法,包括:
接收用于生成ID的生成请求;
根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值;
根据预设时间、机器标识和第二序列值,生成ID。
可选地,生成请求中包括生成ID的第一数量;
根据生成请求,在第一序列值的基础上递增,获得第二序列值,包括:
根据第一数量,在第一序列值的基础上递增,获得第二序列值。
可选地,根据预设时间、机器标识和第二序列值,生成ID,包括:
判断第二序列值是否达到最大值;
若第二序列值达到最大值,则更新预设时间,并重置第二序列值;
根据更新后的预设时间、机器标识和重置后的第二序列值,生成ID。
可选地,方法还包括:
将预设时间和更新后的预设时间持久化存储。
可选地,根据预设时间、机器标识和第二序列值,生成ID,包括:
获取接收到生成请求的接收时间;
确定接收时间和预设时间之间的时间差;
根据时间差、机器标识和第二序列值,生成ID。
可选地,预设时间为如下中的任意一种时间:
系统时间之后的任意时间;或者,预先存储的固定时间。
第二方面,本申请提供一种分布式系统中生成ID的装置,包括:
接收模块,用于接收用于生成ID的生成请求;
获取模块,用于根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值
生成模块,用于根据预设时间、机器标识和第二序列值,生成ID。
可选地,生成请求中包括生成ID的第一数量;获取模块具体用于:
根据第一数量,在第一序列值的基础上递增,获得第二序列值。
可选地,生成模块具体用于:判断第二序列值是否达到最大值;
若第二序列值达到最大值,则更新预设时间,并重置第二序列值;
根据更新后的预设时间、机器标识和重置后的第二序列值,生成ID。
可选地,还包括:存储模块;
存储模块,用于将预设时间和更新后的预设时间持久化存储。
可选地,生成模块具体用于:
获取接收到生成请求的接收时间;
确定接收时间和预设时间之间的时间差;
根据时间差、机器标识和第二序列值,生成ID。
可选地,预设时间为如下中的任意一种时间:
系统时间之后的任意时间;或者,预先存储的固定时间。
第三方面,本申请实施例提供一种服务器,包括:处理器,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现第一方面中任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现第一方面中任一项的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。
本申请实施例提供一种分布式系统中生成ID的方法、装置及服务器,该方法包括:接收用于生成ID的生成请求;根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值;根据预设时间、机器标识和第二序列值,生成ID。在上述方法中,根据预设时间、机器标识和第二序列值,生成ID,由于预设时间不是校准时间,因此即使在出现时钟回拨现象时,也可以避免生成相同的ID,从而保障生成ID的全局唯一性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的时钟回拨现象的示意图;
图2为本申请实施例提供的ID的格式的示意图;
图3为本申请实施例提供的应用场景示意图;
图4为本申请实施例提供的分布式系统中生成ID的方法的流程示意图一;
图5为本申请实施例提供的分布式系统中生成ID的方法的流程示意图二;
图6为本申请实施例提供的分布式系统中生成ID的装置的结构示意图一;
图7为本申请实施例提供的分布式系统中生成ID的装置的结构示意图二;
图8为本申请实施例提供的服务器的硬件示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先结合图1对时钟回拨现象进行说明。
图1为本申请实施例提供的时钟回拨现象的示意图。如图1所示,时间轴上包括:当前时间和校准时间。
校准时间为按照网络时间校准协议(NET TIME PROTOCOL,NTP),对当前时间进行校准之后得到的时间。
校准时间位于当前时间之前,称为时钟回拨现象。例如,当前时间为11号的00:00.200,校准时间为10号的23:59.900。
校准时间位于当前时间之后,称为正常现象。例如,当前时间为11号的00:00.200,校准时间为11号的00:00.300。
在现有技术中,节点通常根据校准时间生成多个ID,例如在11号,由于时钟回拨现象,使得校准时间返回至10号的23:59.900,因此若根据10号的23:59.900生成多个ID,导致11号根据10号的23:59.900生成的多个ID,会与10号根据10号的23:59.900生成的多个ID存在相同,从而无法保障ID的全局唯一性。
下面结合图2对ID的格式进行说明。
图2为本申请实施例提供的ID的格式的示意图。如图2所示,采用雪花算法(SnowFlake)生成的ID包括:64比特(bit)数据。
64比特数据包括:1比特的符号数据(为0)、41比特的时间戳、10比特的机器码和12比特的序列值。
在相关技术中,41比特的时间戳是根据节点的校准时间确定的。针对一个节点,10比特的机器码相同。在1毫秒内,12比特可以产生4096个序列值,当产生够4096个序列值之后,将41比特的时间戳增加1。
由于在相关技术中,41比特的时间戳是根据节点的校准时间确定的,因此当出现时钟回拨现象时,可能存在相同的ID,无法保障ID的全局唯一性。
在本申请中,为了避免存在相同的ID,保障ID的全局唯一性,发明人想到,根据预设时间生成ID,该预设时间不是校准时间,使得生成的每个ID具有全局唯一性。
下面结合图3对本申请实施例提供的生成ID的方法的应用场景进行说明。
图3为本申请实施例提供的应用场景示意图。如图3所示,分布式系统包括:至少一个客户端和集群。集群中包括代理节点和至少一个服务节点。至少一个服务节点可以部署在至少一个服务器中。例如,至少一个客户端的数量可以为1,至少一个服务节点的数量可以为3。
客户端可以向代理节点发送请求,以请求获取ID。
代理节点可以将请求分配给至少一个服务节点中的任意服务节点,以使至少一个服务节点产生具有全局唯一性的ID,并通过代理节点向客户端发送ID,以使客户端获取ID。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图4为本申请实施例提供的分布式系统中生成ID的方法的流程示意图一。如图4所示,该方法包括:
S401,接收用于生成ID的生成请求。
可选地,本申请实施例的执行主体可以为服务器,也可以为设置在服务器上的生成ID的装置,该生成ID的装置可以通过软件和/或硬件的结合来实现。当生成ID的装置通过软件实现时,生成ID的装置可以为服务节点。
可选地,生成请求可以为客户端向服务器发送的,也可以为客户端通过代理节点向服务器发送的。可选地,代理节点可以设置在代理服务器中。
可选地,生成请求可以包括客户端的标识和第一数量等。
第一数量指示生成ID的数量。可选地,第一数量可以为大于或等于1的整数。
S402,根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值。
需要说明的是,分别第一序列值和第二序列值的服务器为同一个服务器。
可选地,可以根据生成请求中的第一数量,在第一序列值的基础上递增,获得第一数量个第二序列值
S403,根据预设时间、机器标识和第二序列值,生成ID。
可选地,机器标识可以包括服务器的标识和服务节点的标识。
可选地,可以通过如下2种方式(方式A1和方式A2)根据预设时间、机器标识和第二序列值,生成ID
方式A1,可以先根据系统时间(例如图1中的当前时间)和校准时间确定是否出现时钟回拨现象;若是,则根据预设时间、机器标识和第二序列值,生成ID;否则,采用现有技术中的方法生成ID。
方式A2,根据预设时间、机器标识和第二序列值,生成ID,包括:获取接收到生成请求的接收时间;确定接收时间和预设时间之间的时间差;根据时间差、机器标识和第二序列值,生成ID。
在上述方式A1和方式A2的基础上,根据预设时间(或时间差)、机器标识和第二序列值,生成ID,包括:根据图2所示的格式,对预设时间(或者时间差)、机器标识和第二序列值进行组合,得到ID。其中,预设时间对应41比特的时间戳,机器标识对应10比特的机器码,第二序列值对应12比特的序列值。
可选地,预设时间为如下中的任意一种时间:
系统时间之后的任意时间;或者,预先存储的固定时间。
系统时间可以为图1中的当前时间,也可以为每天中触发任务的固定时间。
当系统时间可以为图1中的当前时间时,系统时间可以为图1中的当前时间为11号的00:00.200,系统时间之后的任意时间可以为11号的00:00.300等。
当系统时间为每天中触发任务的固定时间时,系统时间可以为每天固定时间例如00:00.000。
预先存储的固定时间例如可以为2021年1月1日00:00.100等。
具体的,可以根据预设时间(时间差)、机器标识和N个第二序列值,生成N个ID。其中N为第一数量。
在图4实施例提供的分布式系统中生成ID的方法中,根据预设时间、机器标识和第二序列值,生成ID,由于预设时间不是校准时间,因此即使在出现时钟回拨现象时,也可以避免生成相同的ID,从而保障生成ID的全局唯一性。
在上述实施例的基础上,下面结合图5对本申请提供的生成ID的方法做进一步地详细说明。
图5为本申请实施例提供的分布式系统中生成ID的方法的流程示意图二。如图5所示,该方法包括:
S501,接收用于生成ID的生成请求。
S502,根据生成请求中包括N,在第一序列值的基础上递增,获得第二序列值,N为第一数量。
获取到的第二序列值的数量等于N。
例如当N为2时,若第一序列值为:00000000 0000,则获取到的2个第二序列值分别为:00000000 0010、00000000 0011。
S503,判断第二序列值是否达到最大值。
若是,则执行S504至S507,否则执行S508。
其中,最大值可以为4096(即2的12次方)。
具体的,判断N个第二序列值中是否存在除最后一个第二序列值之外的其他第二序列值是否达到最大值;若是,则执行S504至S507,否则执行S508。
例如,当N为5、第一序列值为11111111 1100时,则5个第二序列值分别为:
11111111 1101、11111111 1110、11111111 1111、00000000 0000,000000000001;在5个第二序列值中存在除最后一个第二序列值00000000 0001之外的第3个第二序列值11111111 1111达到最大值,因此执行S504至S507。
例如,当N为5、第一序列值为00000000 0000时,则5个第二序列值分别为:00000000 0001、00000000 0010、00000000 0011、00000000 0100、00000000 0101;在5个第二序列值中除最后一个第二序列值00000000 0101之外的任何第二序列值均没有达到最大值,因此执行S508。
S504,根据预设时间、机器标识和N中的M个第二序列值,生成M个ID,M个第二序列值包括等于最大值的第二序列值和位于最大值的第二序列值之前的第二序列值。
M为小于或者等于N-1的整数。
在上述S503中示例的基础上,由于第3个第二序列值11111111 1111达到最大值,因此M=3。进一步地,根据3个第二序列值11111111 1101、11111111 1110、11111111 1111,生成的3个ID例如分别为:
0-00000000 00000000 00000000 000000000 0-00000000 00-11111111 1101;
0-00000000 00000000 00000000 000000000 0-00000000 00-11111111 1110;
0-00000000 00000000 00000000 000000000 0-00000000 00-11111111 1111。
S505,更新预设时间,并重置第二序列值。
当第二序列值达到最大值时,为了满足生成5个ID的需求,需要更新预设时间,并将第二序列值重置为00000000 00。
S506,根据更新后的预设时间、机器标识和重置后的第二序列值,生成N-M个ID。
具体的,根据更新后的预设时间、机器标识和重置后的N-M个第二序列值,生成N-M个ID。
例如,当重置后的2个第二序列值分别为00000000 0100、00000000 0101时,根据更新后的预设时间、机器标识和重置后的第二序列值,生成的2个ID分别为:
0-00000000 00000000 00000000 000000001-00000000 00-00000000 0000;
0-00000000 00000000 00000000 000000001-00000000 00-00000000 0001。
可选地,在本申请中,还可以包括:预设时间和更新后的预设时间持久化存储)。
可选地,可以将预设时间和更新后的预设时间持久化存储至服务器中,也可以将预设时间和更新后的预设时间异步持久化到Mysql节点信息中。
S507,将M个ID和N-M个ID,确定为生成请求请求生成的ID。
S508,根据预设时间、机器标识和N个第二序列值,生成N个ID,得到生成请求请求生成的ID。
在上述S503中示例的基础上,根据5个第二序列值00000000 0001、000000000010、00000000 0011、00000000 0100、00000000 0101,生成的5个ID分别为:
0-00000000 00000000 00000000 000000000-00000000 0001;
0-00000000 00000000 00000000 000000000-00000000 0010;
0-00000000 00000000 00000000 000000000-00000000 0011;
0-00000000 00000000 00000000 000000000-00000000 0100;
0-00000000 00000000 00000000 000000000-00000000 0101。
与现有技术不同,在现有技术中,每毫秒一定生成4096个序列值,若1毫秒内请求生成的ID的数量小于4096(例如3000),则导致ID浪费(浪费1毫秒内生成的其中1000个ID)。而在图5实施例提供的分布式系统中生成ID的方法中,判断第二序列值是否达到最大值,若达到最大值,则根据预设时间、机器标识和N中的M个第二序列值,生成M个ID,根据更新后的预设时间、机器标识和重置后的第二序列值,生成N-M个ID,将M个ID和N-M个ID,确定为生成请求请求生成的ID。即若在1毫秒内请求生成3000个ID,则在1毫秒内生成3000个ID,避免浪费ID。
图6为本申请实施例提供的分布式系统中生成ID的装置的结构示意图一。如图6所示,分布式系统中生成ID的装置10包括:
接收模块11,用于接收用于生成ID的生成请求;
获取模块12,用于根据生成请求,在第一序列值的基础上递增,获得第二序列值,第一序列值是分布式系统上一次生成ID时所对应的序列值
生成模块13,用于根据预设时间、机器标识和第二序列值,生成ID。
本申请实施例提供的分布式系统中生成ID的装置10可以执行上述分布式系统中生成ID的方法,其实现原理以及有益效果类似,此处不再进行赘述。
图7为本申请实施例提供的分布式系统中生成ID的装置的结构示意图二。在图6的基础上,如图7所示,分布式系统中生成ID的装置10还包括:存储模块14;
存储模块14,用于将预设时间和更新后的预设时间持久化存储。
本申请实施例提供的分布式系统中生成ID的装置10可以执行上述分布式系统中生成ID的方法,其实现原理以及有益效果类似,此处不再进行赘述。
可选地,生成请求中包括生成ID的第一数量;获取模块12具体用于:
根据第一数量,在第一序列值的基础上递增,获得第二序列值。
可选地,生成模块13具体用于:判断第二序列值是否达到最大值;
若第二序列值达到最大值,则更新预设时间,并重置第二序列值;
根据更新后的预设时间、机器标识和重置后的第二序列值,生成ID。
可选地,生成模块13具体用于:
获取接收到生成请求的接收时间;
确定接收时间和预设时间之间的时间差;
根据时间差、机器标识和第二序列值,生成ID。
可选地,预设时间为如下中的任意一种时间:
系统时间之后的任意时间;或者,预先存储的固定时间。
本申请实施例提供的分布式系统中生成ID的装置10可以执行上述分布式系统中生成ID的方法,其实现原理以及有益效果类似,此处不再进行赘述。
图8为本申请实施例提供的服务器的硬件示意图。如图8所示,服务器20可以包括:收发器21、存储器22、处理器23。
收发器21可以包括:发射器和/或接收器。该发射器还可称为发送器、发射机、发送端口或发送接口等类似描述,接收器还可称为接收器、接收机、接收端口或接收接口等类似描述。
示例性地,收发器21、存储器22、处理器23各部分之间通过总线24相互连接。
存储器22用于存储计算机执行指令;
处理器23用于执行存储器22存储的计算机执行指令,使得处理器23执行分布式系统中生成ID的方法。
本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当计算机执行指令被处理器执行时实现分布式系统中生成ID的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现分布式系统中生成ID的方法。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(read-only memory,ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(magnetic tape)、软盘(floppy disk)、光盘(optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或至少一个流程和/或方框图一个方框或至少一个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或至少一个流程和/或方框图一个方框或至少一个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或至少一个流程和/或方框图一个方框或至少一个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“至少一个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种分布式系统中生成ID的方法,其特征在于,包括:
接收用于生成ID的生成请求;
根据所述生成请求,在第一序列值的基础上递增,获得第二序列值,所述第一序列值是所述分布式系统上一次生成ID时所对应的序列值;
根据预设时间、机器标识和所述第二序列值,生成所述ID。
2.根据权利要求1所述的方法,其特征在于,所述生成请求中包括生成所述ID的第一数量;
根据所述生成请求,在第一序列值的基础上递增,获得第二序列值,包括:
根据第一数量,在所述第一序列值的基础上递增,获得第二序列值。
3.根据权利要求1或2所述的方法,其特征在于,所述根据预设时间、机器标识和所述第二序列值,生成所述ID,包括:
判断所述第二序列值是否达到最大值;
若所述第二序列值达到所述最大值,则更新所述预设时间,并重置所述第二序列值;
根据更新后的预设时间、所述机器标识和所述重置后的第二序列值,生成所述ID。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述预设时间和所述更新后的预设时间持久化存储。
5.根据权利要求1或2所述的方法,其特征在于,所述根据预设时间、机器标识和所述第二序列值,生成所述ID,包括:
获取接收到所述生成请求的接收时间;
确定所述接收时间和所述预设时间之间的时间差;
根据所述时间差、所述机器标识和所述第二序列值,生成所述ID。
6.根据权利要求1或2所述的方法,其特征在于,所述预设时间为如下中的任意一种时间:
系统时间之后的任意时间;或者,预先存储的固定时间。
7.一种分布式系统中生成ID的装置,其特征在于,包括:
接收模块,用于接收用于生成ID的生成请求;
获取模块,用于根据所述生成请求,在第一序列值的基础上递增,获得第二序列值,所述第一序列值是所述分布式系统上一次生成ID时所对应的序列值
生成模块,用于根据预设时间、机器标识和所述第二序列值,生成所述ID。
8.一种服务器,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111275797.2A CN114143285B (zh) | 2021-10-29 | 2021-10-29 | 分布式系统中生成id的方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111275797.2A CN114143285B (zh) | 2021-10-29 | 2021-10-29 | 分布式系统中生成id的方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114143285A true CN114143285A (zh) | 2022-03-04 |
CN114143285B CN114143285B (zh) | 2023-11-28 |
Family
ID=80396257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111275797.2A Active CN114143285B (zh) | 2021-10-29 | 2021-10-29 | 分布式系统中生成id的方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114143285B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900497A (zh) * | 2022-05-09 | 2022-08-12 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN115865818A (zh) * | 2022-11-25 | 2023-03-28 | 多点(深圳)数字科技有限公司 | 应对突发流量的分布式id生成方法、装置及电子设备 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN110096528A (zh) * | 2019-04-12 | 2019-08-06 | 中国银行股份有限公司 | 一种分布式系统中生成序列的方法、装置及系统 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
WO2020233059A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种基于数据处理的登录处理方法及相关设备 |
CN112423149A (zh) * | 2020-11-19 | 2021-02-26 | 百果园技术(新加坡)有限公司 | 内容标识的生成方法、装置、设备及存储介质 |
CN112988757A (zh) * | 2021-04-21 | 2021-06-18 | 杭州魔点科技有限公司 | 分布式系统全局唯一id生成方法、装置、设备和介质 |
-
2021
- 2021-10-29 CN CN202111275797.2A patent/CN114143285B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN110096528A (zh) * | 2019-04-12 | 2019-08-06 | 中国银行股份有限公司 | 一种分布式系统中生成序列的方法、装置及系统 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
WO2020233059A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种基于数据处理的登录处理方法及相关设备 |
CN112423149A (zh) * | 2020-11-19 | 2021-02-26 | 百果园技术(新加坡)有限公司 | 内容标识的生成方法、装置、设备及存储介质 |
CN112988757A (zh) * | 2021-04-21 | 2021-06-18 | 杭州魔点科技有限公司 | 分布式系统全局唯一id生成方法、装置、设备和介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900497A (zh) * | 2022-05-09 | 2022-08-12 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN114900497B (zh) * | 2022-05-09 | 2023-09-26 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN115865818A (zh) * | 2022-11-25 | 2023-03-28 | 多点(深圳)数字科技有限公司 | 应对突发流量的分布式id生成方法、装置及电子设备 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114143285B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114143285A (zh) | 分布式系统中生成id的方法、装置及服务器 | |
CN110554732B (zh) | 一种标识号生成方法、生成装置、电子设备及存储介质 | |
US9614646B2 (en) | Method and system for robust message retransmission | |
CN110636128A (zh) | 一种数据同步方法、系统、电子设备及存储介质 | |
CN112953757B (zh) | 数据分发方法、系统和计算机设备 | |
CN109167819B (zh) | 数据同步系统、方法、装置及存储介质 | |
CN108228363A (zh) | 一种消息发送方法及装置 | |
CN104967536A (zh) | 实现多机房数据一致性的方法和装置 | |
CN111008087B (zh) | 一种消息处理方法及装置 | |
CN110113187B (zh) | 一种配置更新方法、装置、配置服务器及配置系统 | |
CN112838980B (zh) | 一种消息处理方法、系统、装置、电子设备及存储介质 | |
CN107707395B (zh) | 一种数据传输方法、装置和系统 | |
CN114006688A (zh) | 一种基于lin协议的波特率更新的方法、装置、设备和介质 | |
US12079201B2 (en) | Blockchain-based data storage method, related device and storage medium | |
CN110445658B (zh) | 一种报文处理方法及系统 | |
CN113590017A (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
CN113485864B (zh) | 异常检测、异常分析方法、装置、电子设备和存储介质 | |
CN107493308B (zh) | 一种发送消息的方法和装置及分布式设备集群系统 | |
CN107563942B (zh) | 一种物流数据批量处理方法、物流处理系统以及处理装置 | |
CN113127221B (zh) | 一种限制消息消费速率的方法、装置、设备及存储介质 | |
CN110471922B (zh) | 记账节点的内容扩展方法、设备及计算机可读存储介质 | |
CN109510774B (zh) | 一种在数据同步过程中实现流量控制的方法 | |
CN113434307A (zh) | 任务发送的处理、任务处理的方法、装置、系统及设备 | |
US10624095B2 (en) | Method for managing allocation of carrier frequencies | |
CN115913462B (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 |