CN110602158A - 全局唯一id生成系统与方法、id生成器与存储介质 - Google Patents
全局唯一id生成系统与方法、id生成器与存储介质 Download PDFInfo
- Publication number
- CN110602158A CN110602158A CN201910670193.4A CN201910670193A CN110602158A CN 110602158 A CN110602158 A CN 110602158A CN 201910670193 A CN201910670193 A CN 201910670193A CN 110602158 A CN110602158 A CN 110602158A
- Authority
- CN
- China
- Prior art keywords
- generator
- database
- globally unique
- unique
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种全局唯一ID生成系统与方法、ID生成器与存储介质。该全局唯一ID生成系统,包括至少一个ID生成器,所述ID生成器用于:接收客户端的ID生成请求,然后,根据所述ID生成请求,获取所述客户端对应的数据库表编号,从而,根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID,进而,输出所述全局唯一ID。本发明提供的技术方案,生成的全局唯一ID中不再包含数据中心ID和主机ID,解决了现有的全局唯一ID生成方法无法自适应的确定全局唯一ID的问题;由于全局唯一ID中不涉及主机ID,打破了现有技术中对一台主机中只能运行一个ID生成器程序实例,才能得到全局唯一ID的技术壁垒,提高了全局唯一ID的生成效率。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种全局唯一ID生成系统与方法、ID生成器与存储介质。
背景技术
随着计算机技术发发展,经常涉及到需要对对象或信息进行全局唯一编码的情况,此时,需要利用唯一编码(Identity document,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生成器,包括:
接收模块,用于接收客户端的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为本发明实施例所提供的一种全局唯一ID生成方法的流程示意图;
图2为本发明实施例所提供的一种全局唯一ID的结构构成示意图;
图3为本发明实施例所提供的一种用于记录ID生成器的专用数据库表结构示意图;
图4为本发明实施例所提供的一种全局唯一ID生成系统的架构示意图;
图5为本发明实施例所提供的一种全局唯一ID生成系统的架构示意图;
图6为本发明实施例所提供的一种ID生成器的结构示意图;
图7为本发明实施例所提供的一种ID生成器的实体结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本发明具体的应用场景为:全局唯一ID的生成场景。所谓全局唯一ID,是指所生成的ID是全局唯一的,也即,任意两个全局唯一ID均不相同。
随着大数据、云计算的快速普及,分布式软件架构应用越来越广泛,而在做业务水平拆分、垂直拆分时,需要对数据库进行分库分表,以提高数据库的读写速度。对于分库分表情况的分布式数据库来说,每张表设置一个有序的整型主键显得非常重要。由于库表是分布式的,故需要生成全局唯一ID,使用该全局唯一ID作为分布式库表的主键。
目前全局唯一ID生成方法主要包括如下两种:唯一通用唯一识别码(UUID,Universally Unique Identifier)UUID编码算法和雪花算法(Snowflake)的变形算法。
其中,唯一UUID编码是基于机器的时钟、网卡媒体访问控制地址(Media AccessControl Address,MAC)地址等计算出的48字节长度为唯一编码,编码中包含字母和数字。因此,唯一UUID编码并不适用于数值型全局唯一ID的应用需求,例如,无法应用于前述分布式软件架构场景下生成全局唯一ID作为分布式库表的主键的需求。后续不再对此赘述。
而雪花算法的各种变形算法则可用于生成数值型的全局唯一ID。这些算法是根据机器的时钟、机器所在数据中心编码、机器编码等信息,生成唯一的64bit长度的编码,编码中只包括数字,具有递增升序的特点。
虽然雪花算法的各种变形算法能够满足数值型全局唯一ID的应用需求,但是,其在生成全局唯一ID之前,都需要预先确定数据中心ID和主机ID,因此,无法自适应自动地确定唯一ID生成器的编号。而且,雪花算法为了保证生成的ID是全局唯一的,要求一台主机只能运行一个ID生成器程序实例,如此,才能保证主机ID是唯一的,也就无法同时运行多个ID生成器程序实例,在一定程度上也影响了全局唯一ID的生成效率。
本发明提供的技术方案,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
本发明实施例提供了一种全局唯一ID生成系统与方法。在该全局唯一ID生成系统中,包含至少一个ID生成器。具体而言,该ID生成器可以表现为具体的硬件设备,亦可表现为ID生成器程序实例,本发明实施例都此无特别限定。
具体的,图1示出了ID生成器所执行的全局唯一ID生成方法的实现流程。如图1所示,ID生成器可用于执行如下步骤:
S102,接收客户端的ID生成请求。
本发明实施例中,客户端可以通过直接或间接的方式将ID生成请求发送给ID生成器。其中,ID生成请求用于请求生成全局唯一ID。
S104,根据所述ID生成请求,获取所述客户端对应的数据库表编号。
客户端发送的ID生成请求,具体用于请求生存某一业务对应的全局唯一ID。此时,该ID生成请求中携带有该业务对应的数据库表编号,也即table id。
具体而言,一个所述数据库表用于标识一项业务;任意两个table id不同。例如,某一业务对应于数据库表A,其table id可能为a,而另一业务对应于数据库表B,其tableid 可能为b,而数据库表A与数据库表B不同,table id中,a与b也不同。
S106,根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID。
区别于现有技术中雪花算法的各变形算法,本发明实施例中所生成的全局唯一ID由 table id(数据库表编号)、worker id(ID生成器的生成器编号)、timestamp(时间戳)与sequence(ID序列)构成。
如前所述,table id为数据库表编号。由于本发明实施例所提供的全局唯一ID生成系统中包含至少一个ID生成器,因此,每个ID生成器具备全局唯一的生成器编号,也即worker id,换言之,worker id用于对ID生成器进行标识。时间戳用于记录生成时刻。在具体实现场景中,时间戳可以尽可能的精确,因此,其在生成的全局唯一ID中会占用较长的长度(或位数)。而ID序列则是ID生成器生成的唯一的ID序列。换言之,即便同一ID生成器在同一时刻能够生成两个以上的ID,这两个ID的ID序列也不完全相同,以保证ID生成器所生成的ID是全局唯一的。
为了便于理解,图2示出了一种具体的全局唯一ID的结构构成。如图2所示,该全局唯一ID的数据结构是一个64bit长度的整型数字,其具体包括5部分:0占位符、table id(数据库表编号)、worker id(ID生成器的生成器编号)、timestamp(时间戳)与sequence (ID序列)。
其中,如图2所示的0占位符,用于保证生成的该全局唯一ID是正数,也即,保证了该全局唯一ID是64位长度的正整数。
而在实际实现场景中,table id可以是按照预设规则有序递增的,这也能够保证以生成的全局唯一ID作为主键对某一对象进行编码时,该对象的主键是有序递增的。一种可能的实现场景中,table id的取值范围为:0~63,不同的数据库表的table id具备不同的取值。
如图2所示的时间戳是40bit的长度,其能够表达的时刻可以精确到34年毫秒数。此外,时间戳是以预设的初始时刻为基准进行记录的,因此,实际场景中,还可以根据需要预设该初始时刻(或基准时刻)。例如,该基准时刻可以预设为2010年1月1日0时0 分0秒。
如图2所示的全局唯一ID中,worker id的取值范围可以是:0~31,而sequence的长度是12位,此时,每个ID生成器能够在1毫秒内生成4096个全局唯一ID。
需要说明的是,如图2所示的全局唯一ID的数据结构,仅为本发明实施例所提供的全局唯一ID的数据结构的一种实现方式。实际实现场景中,前述各数据的长度可以根据需要(如业务领域或业务类型)进行自定义调整。以及,实际场景中,table id(数据库表编号)、worker id(ID生成器的生成器编号)、timestamp(时间戳)与sequence(ID序列)的前后顺序也可自定义调整,不作赘述。
S108,输出所述全局唯一ID。
ID生成器在生成全局唯一ID之后,将生成的全局唯一ID通过直接或间接的方式,输出所述客户端。
通过前述设计,本发明实施例所提供的全局唯一ID是以table id(数据库表编号)、 worker id(ID生成器的生成器编号)、timestamp(时间戳)与sequence(ID序列)为基础构成的,不再包含数据中心ID和主机ID,避免了现有的全局唯一ID生成方法无法自适应的确定全局唯一ID的问题;而且,由于全局唯一ID中不涉及主机ID,打破了现有技术中对一台主机中只能运行一个ID生成器程序实例,才能得到全局唯一ID的技术壁垒,提高了全局唯一ID的生成效率。
此外,本发明实施例中,该全局唯一ID生成系统中还可以包括数据库,数据库可用于记录各ID生成器的工作状态。
其中,各ID生成器的工作状态用于指示ID生成器生成ID的情况,具体可以包括但不限于:更新时刻与已生成的ID总数。所谓更新时刻,是指数据库表中记录的各ID生成器最近一次更新的时刻,而ID生成器进行更新是指其状态数据进行更新,换言之,其更新时刻为最近一次获取到ID生成器的工作状态的时刻。而已生成的ID总数,是指ID生成器自启动后所生成的全局唯一ID的数目。
在数据库中,可以建立一个专用数据库表来记录和维护各ID生成器的工作状态。图 3示出了一种用于记录ID生成器的专用数据库表结构。如图3所示,该专用数据库表中可用于记录各ID生成器的工作状态,具体示出了worker id由0~31的32个ID生成器的工作状态。
如图3所示,该专用数据库表中,id是主键,其内容与worker id相同,而use_time与update_time是两个时间字段,use_time用于表示ID生成器的使用时刻(或启用时刻),而update_time则为ID生成器的更新时刻,也即最新一次刷新的时刻。而id_count表示该 ID生成器所生成的全局唯一ID的总数量。由于use_time是ID生成器开始启用即可记录的状态信息,因此,数据库对ID生成器的工作状态进行更新时,无需重复获取或更新 use_time,只需要对update_time与id_count这两个字段所表征的工作状态进行更新即可。
此外,该专用数据库表初始化时,可以根据该全局唯一ID生成系统所包含的ID生成器的数目,假设为n(例如图3所示的32个),插入n行空的数据记录,其中,use_time、update_time为空值,id_count为0。
而数据库更新各ID生成器的工作状态,可以通过数据库与ID生成器之间的数据交互来实现。
一种可能的实现方式中,ID生成器中包括:同步模块,所述同步模块用于在ID生成器处于工作状态时,定时向所述数据库发送所述ID生成器的所述工作状态。
此时,如图4所示,该全局唯一ID生成系统400包括:n个Id生成器410与数据库420,其中,每个ID生成器410中都设置有一个同步模块411,而同步模块411可以与数据库420进行数据交互,同步模块411可定时向数据库420发送自身所在ID生成器410 的工作状态。
在这种实现方式中,ID生成器中的同步模块是一个单独线程,其主要职责就是定时向数据库汇报ID生成器的工作状态,其定时间隔可以是1秒、5秒或10秒等,实际根据应用系统场景进行确定即可,例如,可以将其设置为每5秒钟同步一次工作状态。
ID生成器处于工作状态,则定时同步自身工作状态;若ID生成器处于空闲状态,则无需定时同步工作状态(当然,同步亦可)。这种设计中,考虑到新的ID生成器在启动初始化时,不会将最新一次刷新的worker id抢走。例如,若某一个ID生成器的工作状态长时间没有刷新,则说明该ID生成器下线或者很久没有使用了,那么,该ID生成器对应的worker id就可能会被其他启动初始化的ID生成器抢走使用,因此,通过同步模块的定时同步更新,能够保证工作中的ID生成器可以一直使用自己的worker id字段而不会被抢走。
另一种可能的实现方式中,数据库也可以定时向ID生成器发送工作状态获取请求,而ID生成器响应于该工作状态获取请求,将自身的工作状态发送给数据库,数据库接收ID生成器发送的工作状态,并对自身记录的专用数据库表中的工作状态进行更新即可。
此外,前述实施例中,同步模块定时发送工作状态,或者,数据库定时向ID生成器请求工作状态,其定时的时刻或定时周期都可以根据实际需要自定义设计,本发明实施例对此无特别限定。
而且,本发明实施例对数据库的类型也无特别限定。具体的,数据库可以为关系型数据库,如MySQL数据库、Oracle数据库、MariaDB数据库等,或者,也可以为内存型数据库,如redis数据库等。
此外,针对客户端与ID生成器之间的交互情况,还存在如下情况:
若该全局唯一ID生成系统中所包含的ID生成器的数目为一个,则客户端可以直接与 ID生成器进行数据交互,包括:客户端可将ID生成请求直接发送给ID生成器,而ID生成器也可将生成的全局唯一ID直接输出给客户端。
若该全局唯一ID生成系统中所包含的ID生成器的数目为至少两个,即存在多个ID生成器的情况,此时,客户端与ID生成器之间仍可直接交互。但是,这种实现方式容易导致客户端发送的ID生成请求难以分配的问题,容易将ID生成请求发送给忙碌的ID生成器,导致客户端获取到全局唯一ID的等待时长较长。
因此,当所述全局唯一ID生成系统包括多个所述ID生成器时,所述全局唯一ID生成系统中还可以包括负载均衡模块。此时,可以参考图5所示的全局唯一ID生成系统400,该全局唯一ID生成系统400中除包括n个ID生成器410与数据库420之外,还包括负载均衡模块430。
如图5所示,负载均衡模块430可与n个ID生成器410分别进行数据交互,并反向代理所有的ID生成器,对客户端100统一的ID生成访问入口。也就是,负载均衡模块 430作为客户端100与ID生成器410之间的交互桥梁。
在客户端向ID生成器请求生成全局唯一ID的过程中,负载均衡模块具体可用于:
接收所述客户端发送的所述ID生成请求;
获取所述数据库记录的各所述ID生成器的工作状态;
根据所述工作状态,为所述ID生成请求分配一个所述ID生成器。
以及,在ID生成器生成全局唯一ID并输出至客户端的过程中,负载均衡模块430还可具体用于:
将所述ID生成器输出的所述全局唯一ID反馈至所述客户端。
其中,负载均衡模块在为所述ID生成请求分配一个ID生成器时,可具体根据各ID生成器的工作状态进行确定。具体的,负载均衡模块可以访问(或请求或接收)数据库中维护的前述专用数据库表,以此得到各ID生成器的工作状态。
在在执行ID生成器的分配时,则可以根据ID生成器的更新时刻,按照升序排序查询 (可选步骤),选择距离当前时刻最为久远的一个更新时刻,并将所述ID生成请求分配给该最为久远的更新时刻对应的ID生成器。也就是,将该最为久远的更新时刻对应的ID 生成器的worker id作为所要生成的全局唯一ID的worker id。
如前所述,数据库中维护的各ID生成器的工作状态是在ID生成器工作的状态下定时同步的,若一个ID生成器处于空闲状态,其可能并未反馈自身的工作状态,因此,将该 ID生成请求分配给这一ID生成器,更有利于缩短客户端等待时长。
此外,ID生成器在生成并返回给客户端前一个全局唯一ID后,就将id_count计数器累加1,以供后续同步模块将该数据写入数据库。
综上所述,本发明实施例所提供的技术方案,在全局唯一ID中引入了table id和worker id,而table id能够更好切合业务,在如图2所示的数据结构中,同一个数据库表的全局唯一ID的前7位是固定相同的。并且,在全局唯一ID的数据结构中还去掉了数据中心ID,因为对于不是跨数据中心的应用不需要该标识。而本发明实施例还通过部署负载均衡模块,也实现了自适应worker id选择,可用于跨数据中心部署。
此外,本发明实施例还提供了一种ID生成器。请参考图6,该ID生成器410包括:
接收模块4110,用于接收客户端的ID生成请求;
获取模块4120,用于根据所述ID生成请求,获取所述客户端对应的数据库表编号;
生成模块4130,用于根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID;
输出模块4140,用于输出所述全局唯一ID。
一种具体的实现方式中,该ID生成器410还包括:
同步模块411,用于当处于工作状态时,定时向数据库发送所述ID生成器的所述工作状态,以使得所述数据库记录所述ID生成器的工作状态。
其中,所述工作状态包括:更新时刻与已生成的ID总数。
图6所示实施例的ID生成器410可用于执行上述方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述,可选的,该ID生成器410可以服务器或终端。
应理解以上图6所示ID生成器410的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,生成模块4130可以为单独设立的处理元件,也可以集成在ID生成器410中,例如终端的某一个芯片中实现,此外,也可以以程序的形式存储于ID生成器410的存储器中,由ID生成器 410的某一个处理元件调用并执行以上各个模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。再如,当以上某个模块通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central ProcessingUnit, CPU)或其它可以调用程序的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
本发明实施例提供了一种ID生成器,请参考图7,该ID生成器410,包括:存储器4101、处理器4102以及存储在所述存储器4101中并可在所述处理器4102上运行的计算机程序;所述处理器4102执行所述计算机程序时实现如上述实施例所述的方法。
其中,ID生成器410中处理器4102的数目可以为一个或多个,处理器4102也可以称为处理单元,可以实现一定的控制功能。所述处理器4102可以是通用处理器或者专用处理器等。在一种可选地设计中,处理器4102也可以存有指令,所述指令可以被所述处理器4102运行,使得所述ID生成器410执行上述方法实施例中描述的方法。
在又一种可能的设计中,ID生成器410可以包括电路,所述电路可以实现前述方法实施例中发送或接收或者通信的功能。
可选地,所述ID生成器410中存储器4101的数目可以为一个或多个,存储器4101上存有指令或者中间数据,所述指令可在所述处理器4102上被运行,使得所述ID生成器410执行上述方法实施例中描述的方法。可选地,所述存储器4101中还可以存储有其他相关数据。可选地处理器4102中也可以存储指令和/或数据。所述处理器4102和存储器 4101可以单独设置,也可以集成在一起。
此外,如图7所示,在该ID生成器410中还设置有收发器4103,其中,所述收发器4103可以称为收发单元、收发机、收发电路、或者收发器等,用于与客户端或进行数据传输、数据库或负载均衡模块进行通信,在此不再赘述。
如图7所示,存储器4101、处理器4102与收发器4103通过总线连接并通信。
若该ID生成器410用于实现对应于图3中的方法时,处理器4102用于完成相应的确定或者控制操作,可选的,还可以在存储器4101中存储相应的指令。各个部件的具体的处理方式可以参考前述实施例的相关描述。
此外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前述任一实现方式所述的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (13)
1.一种全局唯一ID生成系统,其特征在于,包括至少一个ID生成器,所述ID生成器用于:
接收客户端的ID生成请求;
根据所述ID生成请求,获取所述客户端对应的数据库表编号;
根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID;
输出所述全局唯一ID。
2.根据权利要求1所述的系统,其特征在于,一个所述数据库表用于标识一项业务;任意两个所述数据库表编号不同。
3.根据权利要求1所述的系统,其特征在于,所述全局唯一ID生成系统还包括:
数据库,用于记录各所述ID生成器的工作状态。
4.根据权利要求3所述的系统,其特征在于,所述ID生成器包括:同步模块;所述同步模块用于在ID生成器处于工作状态时,定时向所述数据库发送所述ID生成器的所述工作状态。
5.根据权利要求1所述的系统,其特征在于,当所述全局唯一ID生成系统包括多个所述ID生成器时,所述全局唯一ID生成系统还包括负载均衡模块;
所述负载均衡模块用于:
接收所述客户端发送的所述ID生成请求;
获取所述数据库记录的各所述ID生成器的工作状态;
根据所述工作状态,为所述ID生成请求分配一个所述ID生成器。
6.根据权利要求5所述的系统,其特征在于,所述负载均衡模块,还用于:
将所述ID生成器输出的所述全局唯一ID反馈至所述客户端。
7.根据权利要求3-5任一项所述的系统,其特征在于,所述工作状态包括:更新时刻与已生成的ID总数。
8.一种全局唯一ID生成方法,其特征在于,应用于ID生成器,所述方法包括:
接收客户端的ID生成请求;
根据所述ID生成请求,获取所述客户端对应的数据库表编号;
根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID;
输出所述全局唯一ID。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当处于工作状态时,定时向数据库发送所述ID生成器的所述工作状态,以使得所述数据库记录所述ID生成器的工作状态。
10.根据权利要求9所述的方法,其特征在于,所述工作状态包括:更新时刻与已生成的ID总数。
11.一种ID生成器,其特征在于,包括:
接收模块,用于接收客户端的ID生成请求;
获取模块,用于根据所述ID生成请求,获取所述客户端对应的数据库表编号;
生成模块,用于根据所述数据库表编号、所述ID生成器的生成器编号、时间戳和ID序列,生成全局唯一ID;
输出模块,用于输出所述全局唯一ID。
12.一种ID生成器,其特征在于,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序;
所述处理器执行所述计算机程序时实现如权利要求8至10任一项所述方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求8至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910670193.4A CN110602158A (zh) | 2019-07-24 | 2019-07-24 | 全局唯一id生成系统与方法、id生成器与存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910670193.4A CN110602158A (zh) | 2019-07-24 | 2019-07-24 | 全局唯一id生成系统与方法、id生成器与存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110602158A true CN110602158A (zh) | 2019-12-20 |
Family
ID=68853196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910670193.4A Pending CN110602158A (zh) | 2019-07-24 | 2019-07-24 | 全局唯一id生成系统与方法、id生成器与存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110602158A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580992A (zh) * | 2020-05-09 | 2020-08-25 | 上海维信荟智金融科技有限公司 | 分布式id生成方法及系统 |
CN112380208A (zh) * | 2020-10-21 | 2021-02-19 | 珠海许继芝电网自动化有限公司 | 配电自动化系统的实时数据id生成方法、系统及介质 |
CN112966035A (zh) * | 2021-03-08 | 2021-06-15 | 深圳证券通信有限公司 | 一种分布式数字id生成算法 |
CN113254207A (zh) * | 2021-05-26 | 2021-08-13 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
CN113708983A (zh) * | 2021-11-01 | 2021-11-26 | 湖南新云网科技有限公司 | 一种分布式节点id生成方法、装置、设备及存储介质 |
CN116610676A (zh) * | 2023-05-25 | 2023-08-18 | 中电金信软件(上海)有限公司 | 一种分布式系统中标识的生成方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611735A (zh) * | 2011-12-21 | 2012-07-25 | 奇智软件(北京)有限公司 | 一种应用服务的负载均衡方法及系统 |
US20130024422A1 (en) * | 2011-07-19 | 2013-01-24 | Infosys Limited | Methods for tracking database changes and devices thereof |
CN107864233A (zh) * | 2017-11-08 | 2018-03-30 | 千寻位置网络有限公司 | 全局唯一id结构及生成方法 |
CN108108252A (zh) * | 2017-12-20 | 2018-06-01 | 马上消费金融股份有限公司 | 一种全局唯一id生成方法、系统及存储介质 |
CN108243264A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信有限公司研究院 | 一种序列号生成方法及系统 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
-
2019
- 2019-07-24 CN CN201910670193.4A patent/CN110602158A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024422A1 (en) * | 2011-07-19 | 2013-01-24 | Infosys Limited | Methods for tracking database changes and devices thereof |
CN102611735A (zh) * | 2011-12-21 | 2012-07-25 | 奇智软件(北京)有限公司 | 一种应用服务的负载均衡方法及系统 |
CN108243264A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信有限公司研究院 | 一种序列号生成方法及系统 |
CN107864233A (zh) * | 2017-11-08 | 2018-03-30 | 千寻位置网络有限公司 | 全局唯一id结构及生成方法 |
CN108108252A (zh) * | 2017-12-20 | 2018-06-01 | 马上消费金融股份有限公司 | 一种全局唯一id生成方法、系统及存储介质 |
CN109697133A (zh) * | 2018-12-28 | 2019-04-30 | 广州华多网络科技有限公司 | Id生成方法、装置及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580992A (zh) * | 2020-05-09 | 2020-08-25 | 上海维信荟智金融科技有限公司 | 分布式id生成方法及系统 |
CN112380208A (zh) * | 2020-10-21 | 2021-02-19 | 珠海许继芝电网自动化有限公司 | 配电自动化系统的实时数据id生成方法、系统及介质 |
CN112966035A (zh) * | 2021-03-08 | 2021-06-15 | 深圳证券通信有限公司 | 一种分布式数字id生成算法 |
CN113254207A (zh) * | 2021-05-26 | 2021-08-13 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
CN113254207B (zh) * | 2021-05-26 | 2024-05-28 | 北京达佳互联信息技术有限公司 | 一种标识码生成方法、装置、服务器和存储介质 |
CN113708983A (zh) * | 2021-11-01 | 2021-11-26 | 湖南新云网科技有限公司 | 一种分布式节点id生成方法、装置、设备及存储介质 |
CN116610676A (zh) * | 2023-05-25 | 2023-08-18 | 中电金信软件(上海)有限公司 | 一种分布式系统中标识的生成方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602158A (zh) | 全局唯一id生成系统与方法、id生成器与存储介质 | |
US11632441B2 (en) | Methods, systems, and devices for electronic note identifier allocation and electronic note generation | |
EP3238421B1 (en) | System for high-throughput handling of transactions in data-partitioned, distributed, relational database management system | |
CN111061810B (zh) | 基于分布式逻辑时间戳的分布式事务管理方法及系统 | |
US11250395B2 (en) | Blockchain-based transaction processing methods and apparatuses and electronic devices | |
CN108241715A (zh) | 一种分布式数据库主键生成方法及装置 | |
CN109933609B (zh) | 一种批量生成id的方法及终端 | |
CN110134503B (zh) | 一种集群环境下的定时任务处理方法、装置及存储介质 | |
CN115712660B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN106993022B (zh) | 用于集群的标识管理方法、标识服务器及相应的系统 | |
CN111737226B (zh) | 一种基于Redis集群优化HBase集群性能的方法 | |
CN111708775B (zh) | 自增id生成方法、装置及系统 | |
CN113704267A (zh) | 基于ElasticSearch的数据查询方法、系统、设备及存储介质 | |
US11789957B2 (en) | System, method, and apparatus for querying a database | |
CN111651459A (zh) | 一种基于Redis的业务ID生成方法 | |
CN111538785A (zh) | 区块链的数据写入方法、装置、系统及电子设备 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN116401242A (zh) | 唯一标识符生成方法及计算设备 | |
CN115422184A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN110935168B (zh) | 用于全球同服架构的分布式id生成方法、装置及设备 | |
CN109274451B (zh) | 一种时间获取方法、装置和设备 | |
JP2014524210A (ja) | 可変長ノンスの生成 | |
CN109032804B (zh) | 数据处理方法和装置、服务器 | |
CN113934792A (zh) | 分布式数据库的处理方法、装置、网络设备和存储介质 | |
WO2023193135A1 (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 |
Application publication date: 20191220 |
|
RJ01 | Rejection of invention patent application after publication |