CN112202938A - Id生成方法、装置及系统 - Google Patents
Id生成方法、装置及系统 Download PDFInfo
- Publication number
- CN112202938A CN112202938A CN202011086576.6A CN202011086576A CN112202938A CN 112202938 A CN112202938 A CN 112202938A CN 202011086576 A CN202011086576 A CN 202011086576A CN 112202938 A CN112202938 A CN 112202938A
- Authority
- CN
- China
- Prior art keywords
- server
- current
- machine number
- timestamp
- client
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 239000000284 extract Substances 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/73—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2151—Time stamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种ID生成方法、装置及系统,其中方法包括:当前服务器接收客户端发送的ID获取请求,其中,所述当前服务器是所述客户端采用轮询的方式在服务器集群中选中的服务器;根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;将生成的所述目标ID值返回给客户端进行存储。相比现有技术,本申请能够提高对时钟回拨的容错性。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种ID生成方法、装置及系统。
背景技术
在分布式系统中,经常需要使用全局唯一ID(GUID)定义对应的数据。GUID的基本需求包括以下几点:1、全局唯一;2、占用相对较少,方便DB存储和索引;3、时间友好,方便业务查询;4、性能高,可用性高。
当前现有方案主要有以下几种:
方案一,数据库本身提供了auto_increment的功能,来提供自增ID。方案相对简单,能够保证唯一性和单调递增,而且id之间的步长可以自定义。
方案二,UUID是在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,保证了时钟序列。
方案三,由于redis单线程的特点,可以使用redis来实现全局id。
方案四,使用zookeeper也可以实现分布式id,实现和使用也不算复杂,只需要引入zookeeper组件。
但是上述方案大部分都强依赖服务器时钟,由于服务器的时间是动态调整的,有可能会出现时间跑到之前几毫秒的情况,即服务器发生时钟回拨,而现有方案中服务器生成ID又多采用毫秒级时间戳,会导致生成ID重复或者服务会处于不可用状态。
发明内容
本申请提供了一种ID生成方法、装置及系统,能够提高对时钟回拨的容错性。
本申请提供了如下方案:
第一方面提供一种ID生成方法,所述方法包括:
当前服务器接收客户端发送的ID获取请求,其中,所述当前服务器是所述客户端采用轮询的方式在服务器集群中选中的服务器;
根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
将生成的所述目标ID值返回给客户端进行存储。
进一步地,所述目标ID值为位宽为64位的ID值,其中时间戳为31位,机器编号为10位,序列号为22位。
进一步地,所述机器编号通过以下方式获得:
所述当前服务器向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
进一步地,所述当前服务器与所述缓存服务器之间采用定时心跳的方式维持所述机器编号的使用。
进一步地,所述机器编号通过以下方式获得:
所述当前服务器自预设的取值范围中随机抽取一个整数值向所述服务器集群中除当前服务器之外的其他服务器发出写请求,若所述其他服务器均对所述写请求校验通过,所述当前服务器根据抽取到的所述整数值确定机器编号;
若所述其他服务器中有未接受所述写请求的服务器,则当前服务器重新抽取整数值向所述服务器集群中的其他服务器发出写请求,重复执行直至所述其他服务器均对所述写请求校验通过。
进一步地,所述方法还包括:
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
本申请第二方面提供一种ID生成装置,所述装置包括:
接收单元,用于接收客户端发来的ID获取请求;
生成单元,用于根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
发送单元,用于将生成的所述目标ID值返回给客户端进行存储。
进一步地,所述生成单元具体用于:
向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
进一步地,所述生成单元还用于:
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
本申请第三方面提供一种计算机系统,所述系统包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述的方法。
根据本申请提供的具体实施例,本申请公开了以下技术效果:当前服务器接收客户端发送的ID获取请求,根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳,对时钟回拨的容错率更高,最大程度避免了时钟回拨所导致的生成ID重复或者服务会处于不可用状态。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例1提供的ID生成方法流程图;
图2示出了本申请ID的结构示意图;
图3示出了本申请实施例2提供的ID生成装置结构图;
图4示出了本申请实施例3提供的计算机系统结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术所述,现有方案大部分都强依赖服务器时钟,由于服务器的时间是动态调整的,有可能会出现时间跑到之前几毫秒的情况,即服务器发生时钟回拨,会导致发号重复或者服务会处于不可用状态。
为此本申请提出了一种ID生成方法,接收客户端发来的ID获取请求,根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳,对时钟回拨的容错率更高。因为时钟回拨一般是毫秒级的,10ms的比较多,现有方案中服务器生成ID一般采用毫秒级时间戳时,比如时间为第50ms时生成一批ID,时间走到第60ms时生成一批ID,此时时钟回拨10ms,时间回到了第50ms,那么之后第50ms和第60ms之间生成的ID和之前生成的ID将严重重复,而当采用秒级时间戳时,比如时间为第50s时生成一批ID,时间走到第50s的第50ms,这时服务器仍然用第50s作为时间戳生成ID,假如这个时候时间回拨到了第50s的第10ms,此时服务器依然用50s的时间戳生成ID,这三次生成的ID是连续递增的,保证唯一,时钟回拨40ms对服务器生成ID毫无影响。因此容错率高,基本不会为时钟回拨困扰。
实施例1
本申请实施例提供一种ID生成方法,以该方法应用于ID生成装置中来举例说明,该装置可以被配置于任一计算机设备中,以使该计算机设备可以执行ID生成方法。
如图1所示,上述方法包括:
S11、当前服务器接收客户端发送的ID获取请求,其中,所述当前服务器是所述客户端采用轮询的方式在服务器集群中选中的服务器;
客户端在本地缓存的ID用完后,会向服务端集群中的服务器发送ID获取请求,由于服务端集群通常会布置很多个服务器,客户端会轮询挑选一个服务器发送ID获取请求,ID获取请求为HTTP请求,选中一个服务器获取1万个ID后缓存在客户端中,客户端监测ID的用量,在ID剩余量达到阈值时,会向下一台服务器请求ID,具体的,可以将所有服务器地址按顺序存储到一张表中,按照表中顺序依次向服务器请求ID,当客户端向选中的服务器发送ID获取请求,服务器由于故障无法生成ID时,可以由客户端选取下一台服务器发送ID获取请求。
S12、根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
接收到ID获取请求后,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,时间戳为秒级时间戳,是指服务器的时间戳以秒为单位,相较于现有方案中采用的毫秒级时间戳,容错率更高。因为时钟回拨一般是毫秒级的,10ms的比较多,当采用毫秒级时间戳时,比如时间为第50ms时生成一批ID,时间走到第60ms时生成一批ID,此时时钟回拨10ms,时间回到了第50ms,那么之后第50ms和第60ms之间生成的ID和之前生成的ID将严重重复,而当采用秒级时间戳时,比如时间为第50s时生成一批ID,时间走到第50s的第50ms,这时服务器仍然用第50s作为时间戳生成ID,假如这个时候时间回拨到了第50s的第10ms,此时服务器依然用50s的时间戳生成ID,这三次生成的ID是连续递增的,保证唯一,时钟回拨40ms对服务器生成ID毫无影响。因此容错率高,基本不会为时钟回拨困扰。
S13、将生成的所述目标ID值返回给客户端进行存储。
本申请中客户端一次会向服务器批量获取1万个ID,因此服务器会生成1万个ID返回给客户端,客户端会对1万个ID进行缓存,在本地客户端内缓存,能够减少网络开销。
所述目标ID值为位宽为64位的ID值,其中时间戳为31位,机器编号为10位,自增序列号为22位。
如图2所示,目标ID值为位宽为64位的ID值,其中,第一位为开始位,默认为0,然后是31位的时间戳,时间戳后面是10位的机器编号,机器编号后面是22位的自增序列号,由于允许客户端批量获取ID,因此将时间戳设计为31位,将自增序列号设计为22位,每台服务器每秒可以派发400多万ID,机器编号为10位,因此服务端集群最多容纳1024台服务器,也就是极限情况可以派发4亿以上的号码,这对任何系统基本上是足够的,能够应对各种大促等的一些极限流量突增和流量峰值的情况。
在一个优选实施例中,所述机器编号通过以下方式获得:
所述当前服务器向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
当前服务器启动时会先到缓存服务器中注册机器编号,缓存服务器返回给当前服务器一个机器编号,每个服务器唯一对应一个服务器编号,保证各服务器生成ID的唯一性。
所述当前服务器与所述缓存服务器之间采用定时心跳的方式维持所述机器编号的使用。
当前服务器定时向缓存服务器发送“心跳”保持连接,维持当前服务器对应的机器编号的使用。
在另一个优选实施例中,所述机器编号通过以下方式获得:
所述当前服务器自预设的取值范围中随机抽取一个整数值向所述服务器集群中当前服务器之外的其他服务器发出写请求,若所述其他服务器均对所述写请求校验通过,所述当前服务器根据抽取到的所述整数值确定机器编号;
若所述其他服务器中有未接受所述写请求的服务器,则当前服务器重新抽取整数值向所述服务器集群中的其他服务器发出写请求,重复执行直至所述其他服务器均对所述写请求校验通过。
当前服务器自预设的取值范围中随机抽取一个整数值向服务器集群中的其他服务器发出写请求,该取值范围为0至1023,其他服务器会根据自身机器编号来决定是否对写请求校验通过,如果当前服务器抽取到的整数值已经被其他服务器中的某个服务器使用到,则写请求不会校验通过,当前服务器会重新抽取整数值向服务器集群中的其他服务器发出写请求,直至其他服务器均对写请求校验通过,利用该整数值确定机器编号。
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
时钟回拨为秒级的概率极少,如果万一出现回拨,例如在秒和秒之间的缝隙,当前服务器会重新获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值。
实施例2
对应上述方法,本申请实施例提供一种ID生成装置,如图3所示,所述装置包括:
一种ID生成装置,其特征在于,所述装置包括:
接收单元21,用于接收客户端发来的ID获取请求;
客户端在本地缓存的ID用完后,会向服务端集群中的服务器发送ID获取请求,由于服务端集群通常会布置很多个服务器,客户端会轮询挑选一个服务器发送ID获取请求,ID获取请求为HTTP请求,接收单元21接收客户端发来的ID获取请求,选中一个服务器获取1万个ID后缓存在客户端中,客户端监测ID的用量,在ID剩余量达到阈值时,会向下一台服务器请求ID,具体的,可以将所有服务器地址按顺序存储到一张表中,按照表中顺序依次向服务器请求ID,当客户端向选中的服务器发送ID获取请求,服务器由于故障无法生成ID时,可以由客户端选取下一台服务器发送ID获取请求。
生成单元22,用于根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
生成单元22接收到ID获取请求后,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,时间戳为秒级时间戳,是指服务器的时间戳以秒为单位,相较于现有方案中采用的毫秒级时间戳,容错率更高。因为时钟回拨一般是毫秒级的,10ms的比较多,当采用毫秒级时间戳时,比如时间为第50ms时生成一批ID,时间走到第60ms时生成一批ID,此时时钟回拨10ms,时间回到了第50ms,那么之后第50ms和第60ms之间生成的ID和之前生成的ID将严重重复,而当采用秒级时间戳时,比如时间为第50s时生成一批ID,时间走到第50s的第50ms,这时服务器仍然用第50s作为时间戳生成ID,假如这个时候时间回拨到了第50s的第10ms,此时服务器依然用50s的时间戳生成ID,这三次生成的ID是连续递增的,保证唯一,时钟回拨40ms对服务器生成ID毫无影响。因此容错率高,基本不会为时钟回拨困扰。
发送单元23,用于将生成的所述目标ID值返回给客户端进行存储。
本申请中客户端一次会向服务器批量获取1万个ID,因此服务器会生成1万个ID,发送单元23将1万个ID返回给客户端,客户端会对1万个ID进行缓存,在本地客户端内缓存,能够减少网络开销。
进一步地,所述生成单元22具体用于:
向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
当前服务器启动时会先到缓存服务器中注册机器编号,缓存服务器返回给当前服务器一个机器编号,每个服务器唯一对应一个服务器编号,保证各服务器生成ID的唯一性。
进一步地,所述生成单元22还用于:
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
时钟回拨为秒级的概率极少,如果万一出现回拨,例如在秒和秒之间的缝隙,当前服务器会重新获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值。
本申请实施例提供一种ID生成装置,与本申请实施例所提供的ID生成方法属于同一申请构思,可执行本申请实施例所提供的ID生成方法,具备执行ID生成方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例提供的ID生成方法,此处不再加以赘述。
实施例3
对应上述方法和装置,本申请实施例3提供一种计算机系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行实施例一的方法步骤,如执行以下操作:
当前服务器接收客户端发送的ID获取请求,其中,所述当前服务器是所述客户端采用轮询的方式在服务器集群中选中的服务器;
根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
将生成的所述目标ID值返回给客户端进行存储。
其中,图4示例性的展示出了计算机系统的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。
其中,处理器1510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器1520可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制计算机系统1500运行的操作系统1521,用于控制计算机系统1500的低级别操作的基本输入输出系统(BIOS)。另外,还可以存储网页浏览器1523,数据存储管理系统1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行。
输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。
另外,该计算机系统1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的ID生成方法、装置及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种ID生成方法,其特征在于,所述方法包括:
当前服务器接收客户端发送的ID获取请求,其中,所述当前服务器是所述客户端采用轮询的方式在服务器集群中选中的服务器;
根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
将生成的所述目标ID值返回给客户端进行存储。
2.如权利要求1所述的ID生成方法,其特征在于:
所述目标ID值为位宽为64位的ID值,其中时间戳为31位,机器编号为10位,自增序列号为22位。
3.如权利要求1所述的ID生成方法,其特征在于,所述机器编号通过以下方式获得:
所述当前服务器向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
4.如权利要求3所述的ID生成方法,其特征在于:
所述当前服务器与所述缓存服务器之间采用定时心跳的方式维持所述机器编号的使用。
5.如权利要求1所述的ID生成方法,其特征在于,所述机器编号通过以下方式获得:
所述当前服务器自预设的取值范围中随机抽取一个整数值向所述服务器集群中除当前服务器之外的其他服务器发出写请求,若所述其他服务器均对所述写请求校验通过,所述当前服务器根据抽取到的所述整数值确定机器编号;
若所述其他服务器中有未接受所述写请求的服务器,则当前服务器重新抽取整数值向所述服务器集群中的其他服务器发出写请求,重复执行直至所述其他服务器均对所述写请求校验通过。
6.如权利要求3或4或5所述的ID生成方法,其特征在于,所述方法还包括:
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
7.一种ID生成装置,其特征在于,所述装置包括:
接收单元,用于接收客户端发送的ID获取请求;
生成单元,用于根据所述ID获取请求,基于当前时间戳、所述当前服务器的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,其中时间戳为秒级时间戳;
发送单元,用于将生成的所述目标ID值返回给客户端进行存储。
8.如权利要求7所述的ID生成装置,其特征在于,所述生成单元具体用于:
向缓存服务器发送机器编号获取请求;
接收所述缓存服务器返回的所述当前服务器的机器编号。
9.如权利要求7所述的ID生成装置,其特征在于,所述生成单元还用于:
当发生时钟回拨时,所述当前服务器获取新的机器编号,并基于所述当前时间戳、所述新的机器编号和所述当前时间戳对应的自增序列号生成目标ID值,所述新的机器编号不同于时钟回拨前获取到的机器编号。
10.一种计算机系统,其特征在于,所述系统包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086576.6A CN112202938A (zh) | 2020-10-12 | 2020-10-12 | Id生成方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011086576.6A CN112202938A (zh) | 2020-10-12 | 2020-10-12 | Id生成方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112202938A true CN112202938A (zh) | 2021-01-08 |
Family
ID=74009909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011086576.6A Pending CN112202938A (zh) | 2020-10-12 | 2020-10-12 | Id生成方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202938A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065034A (zh) * | 2021-03-29 | 2021-07-02 | 上海安畅网络科技股份有限公司 | 一种分布式系统编号生成方法和系统 |
CN113254449A (zh) * | 2021-05-27 | 2021-08-13 | 平安普惠企业管理有限公司 | Id生成方法、装置、设备及存储介质 |
CN113438177A (zh) * | 2021-06-22 | 2021-09-24 | 中国平安财产保险股份有限公司 | 限制号码外呼的方法及装置、电子设备、存储介质 |
CN113596193A (zh) * | 2021-07-27 | 2021-11-02 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成系统 |
CN114900497A (zh) * | 2022-05-09 | 2022-08-12 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN115361399A (zh) * | 2022-10-24 | 2022-11-18 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714948B1 (en) * | 1999-04-29 | 2004-03-30 | Charles Schwab & Co., Inc. | Method and system for rapidly generating identifiers for records of a database |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN111083228A (zh) * | 2019-12-24 | 2020-04-28 | 腾讯云计算(北京)有限责任公司 | 标识号的生成方法、装置和电子设备 |
CN111538594A (zh) * | 2020-04-21 | 2020-08-14 | 招商局金融科技有限公司 | 基于分布式系统的订单id生成方法、装置、设备及介质 |
-
2020
- 2020-10-12 CN CN202011086576.6A patent/CN112202938A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714948B1 (en) * | 1999-04-29 | 2004-03-30 | Charles Schwab & Co., Inc. | Method and system for rapidly generating identifiers for records of a database |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN109740120A (zh) * | 2018-12-14 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 分布式环境下唯一标识的生成方法、装置、计算机设备 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
CN111083228A (zh) * | 2019-12-24 | 2020-04-28 | 腾讯云计算(北京)有限责任公司 | 标识号的生成方法、装置和电子设备 |
CN111538594A (zh) * | 2020-04-21 | 2020-08-14 | 招商局金融科技有限公司 | 基于分布式系统的订单id生成方法、装置、设备及介质 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065034B (zh) * | 2021-03-29 | 2022-11-18 | 上海安畅网络科技股份有限公司 | 一种分布式系统编号生成方法和系统 |
CN113065034A (zh) * | 2021-03-29 | 2021-07-02 | 上海安畅网络科技股份有限公司 | 一种分布式系统编号生成方法和系统 |
CN113254449A (zh) * | 2021-05-27 | 2021-08-13 | 平安普惠企业管理有限公司 | Id生成方法、装置、设备及存储介质 |
CN113254449B (zh) * | 2021-05-27 | 2024-02-09 | 杭州健景科技有限公司 | Id生成方法、装置、设备及存储介质 |
CN113438177A (zh) * | 2021-06-22 | 2021-09-24 | 中国平安财产保险股份有限公司 | 限制号码外呼的方法及装置、电子设备、存储介质 |
CN113596193A (zh) * | 2021-07-27 | 2021-11-02 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
CN113596193B (zh) * | 2021-07-27 | 2024-01-16 | 京东科技控股股份有限公司 | 一种分布式id处理方法、系统、存储介质及电子设备 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成系统 |
CN114900497A (zh) * | 2022-05-09 | 2022-08-12 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN114900497B (zh) * | 2022-05-09 | 2023-09-26 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
CN115361399A (zh) * | 2022-10-24 | 2022-11-18 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115361399B (zh) * | 2022-10-24 | 2023-01-24 | 中国水利水电第七工程局有限公司 | 一种多终端数据同步方法、装置及系统 |
CN115987941A (zh) * | 2023-03-20 | 2023-04-18 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
CN115987941B (zh) * | 2023-03-20 | 2023-06-06 | 公安部信息通信中心 | 一种支持多租户的去中心化号码生成系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112202938A (zh) | Id生成方法、装置及系统 | |
US11677838B2 (en) | Acquisition method, apparatus, device and storage medium for applet data | |
CN108712457B (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
CN111092877B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
WO2021155656A1 (zh) | 数据处理方法和装置、访问系统、电子设备和存储介质 | |
CN111125057B (zh) | 一种业务请求的处理方法、装置及计算机系统 | |
WO2021047239A1 (zh) | 一种页面获取方法、装置及系统 | |
CN112966200A (zh) | 一种服务降级方法和渲染服务器 | |
CN113238754A (zh) | 服务端渲染方法、装置、服务端及存储介质 | |
KR20210040864A (ko) | 파일 디렉터리 순회 방법, 장치, 기기, 매체 및 컴퓨터 프로그램 | |
CN110311963B (zh) | 消息推送方法、装置、计算机设备及计算机可读存储介质 | |
CN110275785B (zh) | 数据处理方法、装置、客户端和服务器 | |
CN115023929A (zh) | 数据同步方法、装置、系统、电子设备及存储介质 | |
CN110728379A (zh) | 配置信息管理方法及装置、电子设备和非暂态存储介质 | |
CN114116656B (zh) | 数据处理方法及相关装置 | |
CN113626099B (zh) | 应用程序的启动方法、装置及电子设备 | |
CN115103024A (zh) | 一种序列号生成方法、装置、电子设备及存储介质 | |
CN114691703A (zh) | 数据更新方法、装置、电子设备及存储介质 | |
CN114090338A (zh) | 一种请求处理方法、装置及电子设备 | |
CN113626402A (zh) | 日志数据的获取方法和装置、电子设备和存储介质 | |
CN113221042A (zh) | 网页操作过程记录方法、装置、电子设备及计算机可读介质 | |
CN114356970A (zh) | 一种存储系统资源缓存方法及装置 | |
CN113407193A (zh) | 一种系统部署方法、装置和设备 | |
CN113536168A (zh) | 组件处理方法及设备 | |
CN113569173A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210108 |