CN112115133A - 分布式全局唯一id生成方法和系统、存储介质、设备 - Google Patents
分布式全局唯一id生成方法和系统、存储介质、设备 Download PDFInfo
- Publication number
- CN112115133A CN112115133A CN202010770898.6A CN202010770898A CN112115133A CN 112115133 A CN112115133 A CN 112115133A CN 202010770898 A CN202010770898 A CN 202010770898A CN 112115133 A CN112115133 A CN 112115133A
- Authority
- CN
- China
- Prior art keywords
- segment
- target
- application service
- standby
- distributed
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
Abstract
本发明公开了一种分布式全局唯一ID生成方法和系统、存储介质、设备,该方法包括:接收分布式全局唯一ID的生成请求,并识别所述生成请求对应的应用服务;查询是否存在预先为所述应用服务分配的目标ID段;若存在所述目标ID段,则获取所述目标ID段的目标值;基于所述目标值进行递增,生成分布式全局唯一ID。基于本发明提供的方法,采用数据库内存递增方式生成分布式全局唯一ID,并且同时提供目标ID段和备用ID段的方式提高ID生成性能的同时,避免ID获取过程中发生远程调用阻塞。
Description
技术领域
本发明涉及数据处理技术领域,尤其是一种分布式全局唯一ID生成方法和系统、存储介质、设备。
背景技术
在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。并且随着计算机技术的发展,对于不同的业务的产品系统中的数据也随之增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,因此,针对每一条数据或消息生成全局唯一ID的系统是非常必要的。
目前,在基于数据库生成分布式全局唯一ID时,多采用snowflake算法,snowflake雪花算法在生成ID时需要分配workid,但是由于workid是有限的,因此,其对于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。
可选地,所述系统还包括:
第三生成模块,适于新建异步任务线程,为所述应用服务生成新备用ID段。
可选地,所述系统还包括:
第四生成模块,适于当不存在所述备用ID段时,为所述应用服务生成备用ID段。
可选地,所述第四生成模块还适于:
获取预设数据库的自增数、预设初始值和缓冲容量;
基于所述自增数、预设初始值和缓冲容量生成所述应用服务的备用ID段。
根据本发明的又一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述任一项所述的分布式全局唯一ID生成方法。
根据本发明的又一个方面,还提供了一种计算设备,所述计算设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述任一项所述的分布式全局唯一ID生成方法。
本发明提供了一种分布式全局唯一ID生成方法和系统、存储介质、设备,在本发明提供的方法中,采用数据库内存递增方式生成分布式全局唯一ID,并且同时提供目标ID段和备用ID段的方式提高ID生成性能的同时,避免ID获取过程中发生远程调用阻塞。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1示出了根据本发明一个实施例的分布式全局唯一ID生成方法流程示意图;
图2示出了根据本发明另一实施例的分布式全局唯一ID生成方法流程示意图;
图3示出了根据本发明又一实施例的分布式全局唯一ID生成方法流程示意图;
图4示出了根据本发明一个实施例的分布式全局唯一ID生成系统结构示意图;
图5示出了根据本发明另一实施例的分布式全局唯一ID生成系统结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本发明实施例提供了一种分布式全局唯一ID生成方法,参见图1可知,本发明实施例提供的分布式全局唯一ID生成方法可以包括:
步骤S102,接收分布式全局唯一ID的生成请求,并识别生成请求对应的应用服务。
在本发明实施例中,分布式全局唯一ID的生成请求可以来自客户端或是服务器。一般情况下,分布式全局唯一ID主要是对不同的业务产品的消息或是数据进行标识,因此,本发明实施例在接收到分布式全局唯一ID的生成请求之后,可以先识别出生成请求对应的应用服务,进而针对该应用服务的数据或消息生成分布式全局唯一ID。其中,应用服务可以是针对不同业务如金融、电商等产品业务。
步骤S104,查询是否存在预先为应用服务分配的目标ID段。
本发明实施例所采用的分布式全局唯一ID的生成方法可通过数据库内增的方式实现。因此在查询是否存在目标ID段时,可以在预设数据库中查询是否存在预先为应用服务分配的目标ID段。其中,预设数据库可以是mysql、Zookeeper或是其他类型的数据库。目标ID段,是在预设数据库内存中递增的一组ID,是预先通过Sequence序列器为该应用服务分配获得。
一个序列器即一个单独的会不断生成不重复、趋势定增ID的对象。一个序列器包含序列器名称、初始值、递增幅度、缓冲容量四个要素。其中,序列器名称,是指一个序列器的唯一标识,客户端通过序列器名称作为参数,可以请求获取相应Sequence产生的ID。初始值,序列器产生的第一个ID的值。递增幅度,序列器连续产生的两个ID之间的差值。缓冲容量,序列器中每个ID段的长度。ID段,即在内存里递增的一组ID,是由从数据库自增数i、初始值init和缓冲容量p计算得到,即一个ID段可以为:[i*p+init,(i+1)*p+init]。
步骤S106,若存在目标ID段,则获取目标ID段的目标值。
假设存在应用服务的目标ID段,则可以获取到目标ID段的目标值,目标值,是作为目标ID段的当前值,即在目标ID段中已经被数据或消息占用的最后一个ID。
步骤S108,基于目标值进行递增,生成分布式全局唯一ID。
在本发明实施例中,分布式全局唯一ID是属于目标ID段中的一个ID,在上述步骤S106中已经获取到目标ID段的目标值,因此,在根据生成请求所生成的分布式全局唯一ID则可以是目标值的进行递增后得到的值。举例来讲,假设目标ID段为[10000,20000],增幅为1,获取到的目标值为10010,那么此次所生成的分布式全局唯一ID则是10011,在生成分布式全局唯一ID之后,则可以将其返回至客户端。其中,递增增幅可以预先根据不同的需求进行设置,本发明对此不做限定。
在一些情况下,可能存在目标ID段中的各ID全部被占用的情况,因此,参见图2,在上述步骤S106之后,还可以包括:
步骤S110,判断目标值是否为目标ID段的末端值;若目标值不是目标ID段的末端值,则执行步骤S108,基于目标值进行递增,以生成分布式全局唯一ID。其中,目标ID段的末端值可以理解为目标ID段的最后一个ID。在基于目标ID段生成分布式全局唯一ID之前,可以先判断获取到的目标ID段的目标值是否为目标ID段的最后一个ID,如果不是,则可以基于目标值进行递增以生成分布式全局唯一ID。
从另一方面来讲,假设目标值为目标ID段的末端值,则可以通过应用服务的备用ID段生成分布式全局唯一ID。备用ID段同样是预先为应用服务分配的ID段以进行备用,其生成方式与目标ID段的生成方式相同。当目标ID段中的全部ID被占用后,可通过备用ID段生成分布式全局唯一ID。
也就是说,在本发明一可选实施例中,如图2所示,在上述步骤S110之后,还可以包括:
步骤S112,若目标值为目标ID段的末端值,则查询是否存在预先为应用服务分配的备用ID段;
步骤S114,若存在备用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段,即上述步骤S112之后,还可以包括步骤S116,为应用服务生成备用ID段。
在本发明实施例中,生成备用ID段时,同样可通过序列器实现,即,可以先获取预设数据库的自增数、预设初始值和缓冲容量(即每个ID段的长度);进而基于自增数、预设初始值和缓冲容量生成应用服务的备用ID段。如上述实施例所介绍,生成备用ID段时,假设据库自增数为i、初始值为init、缓冲容量为p,那么对应的ID段为[i*p+init,(i+1)*p+init]。
基于本发明实施例提供的方法,采用数据库内存递增方式生成分布式全局唯一ID,根据预设的ID段以及缓冲容量在内存中递增,并且通过每个服务提供目标ID段和备用ID段的双缓冲申请ID段的方式提高性能和避免ID获取过程中发生远程调用阻塞,并可支持转换成32位,并且在逻辑上实现无限水平扩容。
在本发明另一可选实施例中,除上述介绍的基于数据库内存增长的方式生成之外,还可以通过预设格式生成。即,在上述步骤S102接收分布式全局唯一ID的生成请求,并识别生成请求对应的应用服务之后,还可以获取分布式全局唯一ID的预设生成格式;基于预设生成格式生成分布式全局唯一ID。
其中,基于预设生成格式生成分布式全局唯一ID时,需要先确定分布式全局唯一ID的多个预设填充位;其中,填充位包括:时间戳信息(如接收到生成请求的时间戳、或是与上一生成的ID的时间戳差)、数据中心标识(即应用服务对应数据或消息所存储的数据中心的标识)、应用服务唯一标识和随机环形滚动序列中至少之一;获取各填充位的填充数据,将填充数据填充至对应填充位后拼接生成分布式全局唯一ID。基于本发明实施例提供的方法,使用随机环形滚动序列的填充位,解决ID散列的问题,即每次不从0开始递增,而是随机一个初始值,并环形滚动前进,使任意时间段、时间间隔生成的ID都能均匀散列。
图3示出了根据本发明又一实施例的分布式全局唯一ID生成方法流程示意图,如图3所示,本发明实施例提供的分布式全局唯一ID生成方法可以包括:
步骤S302,接收来自客户端的分布式全局唯一ID的生成请求,并识别对应的应用服务;
步骤S304,查找是否存在与应用服务对应的目标ID段;若是,则执行步骤S306;若否,则执行步骤S314;
步骤S306,获取目标ID段的目标值v;
步骤S308,判断目标值v是否为目标ID段的末端值,即,判断目标ID段是否已经使用完;若是,则执行步骤S314;若否,则执行步骤S310,;
步骤S310,基于目标值v在目标ID段的可用ID段进行递增,获取到新的目标值作为ID;
步骤S312,将获取到的ID返回至客户端;
步骤S314,判断数据库内存中是否存在备用ID段;若是,则执行步骤S316;若否,则执行步骤S318;
步骤S316,将备用ID段切换为当前可使用的目标ID段;
步骤S318;新建备用ID段准备线程等待生成备用ID段;
步骤S320,从MySQL中获取数据库自增数i、预设初始值init、缓冲容量p;
步骤S322,根据数据库自增数i、预设初始值init、缓冲容量p生成备用ID段:[i*p+init,(i+1)*p+init];
步骤S324,将备用ID段传输至ID请求线程;
步骤S326,通过备用ID段准备线程再生成一个新备用ID段,保证数据库内存中有一个正在使用的ID段和一个备用的ID段,以在下次目标ID段中各ID号使用完成时,将其切换至目标ID段,在后续响应新生成请求后生成分布式全局唯一ID。
基于本发明实施例提供的方法采用数据库内存递增方式生成分布式全局唯一ID时,如果目标ID段用完,则转换内存里的备用ID段为目标ID段,并执行递增操作以生成分布式全局唯一ID后返回给客户;另外,如果备用ID段被使用,则有单独的任务线程异步的补充备用ID段,进而提升ID生成效率和性能。
基于同一发明构思,本发明实施例还提供了一种分布式全局唯一ID生成系统,如图4所示,该系统可以包括:
接收模块410,适于接收分布式全局唯一ID的生成请求,并识别生成请求对应的应用服务;
第一查询模块420,适于查询是否存在预先为应用服务分配的目标ID段;
获取模块430,适于当存在目标ID段时,获取目标ID段的目标值;
第一生成模块440,适于基于目标值进行递增,生成分布式全局唯一ID。
在本发明一可选实施例中,如图5所示,该系统还可以包括:
第二查询模块450,适于当不存在目标ID段时,查询是否存在预先为应用服务分配的备用ID段;
第二生成模块460,适于当存在备用ID段时,基于备用ID段生成分布式全局唯一ID。
在本发明一可选实施例中,如图5所示,该系统还可以包括:
判断模块470,判断目标值是否为目标ID段的末端值;
当目标值不是目标ID段的末端值时,通过第一生成模块440执行基于目标值进行递增的步骤。
在本发明一可选实施例中,如图5所示,第二查询模块450还适于当目标值为目标ID段的末端值时,查询是否存在预先为应用服务分配的备用ID段。
在本发明一可选实施例中,第二生成模块460还适于:
将备用ID段作为应用服务的新目标ID段;
获取新目标ID段的新目标值;
基于新目标值进行递增,生成分布式全局唯一ID。
在本发明一可选实施例中,如图5所示,该系统还可以包括:
第三生成模块480,适于新建异步任务线程,为应用服务生成新备用ID段。
在本发明一可选实施例中,如图5所示,该系统还可以包括:
第四生成模块490,适于当不存在备用ID段时,为应用服务生成备用ID段。
在本发明一可选实施例中,第四生成模块490还适于:
获取预设数据库的自增数、预设初始值和缓冲容量;
基于自增数、预设初始值和缓冲容量生成应用服务的备用ID段。
在本发明一可选实施例中,如图5所示,该系统还可以包括:
第五生成模块500,适于获取分布式全局唯一ID的预设生成格式;
基于预设生成格式生成分布式全局唯一ID。
在本发明一可选实施例中,第五生成模块500还适于:
确定分布式全局唯一ID的多个预设填充位;其中,填充位包括:时间戳信息、数据中心标识、应用服务唯一标识和随机环形滚动序列中至少之一;
获取各填充位的填充数据,将填充数据填充至对应填充位后拼接生成分布式全局唯一ID。
在本发明一可选实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行上述任一实施例的分布式全局唯一ID生成方法。
在本发明一可选实施例中,还提供了一种计算设备,计算设备包括处理器以及存储器:
存储器用于存储程序代码,并将程序代码传输给处理器;
处理器用于根据程序代码中的指令执行上述任一实施例的分布式全局唯一ID生成方法。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
本发明实施例还包括在下列编号条款中规定的这些和其他方面:
1、一种分布式全局唯一ID生成方法,包括:
接收分布式全局唯一ID的生成请求,并识别所述生成请求对应的应用服务;
查询是否存在预先为所述应用服务分配的目标ID段;
若存在所述目标ID段,则获取所述目标ID段的目标值;
基于所述目标值进行递增,生成分布式全局唯一ID。
2、根据条款1所述的方法,所述查询是否存在预先为所述应用服务分配的目标ID段之后,还包括:
若不存在所述目标ID段,则查询是否存在预先为所述应用服务分配的备用ID段;
若存在所述备用ID段,则基于所述备用ID段生成分布式全局唯一ID。
3、根据条款1所述的方法,所述获取所述目标ID段的目标值之后还包括:
判断所述目标值是否为所述目标ID段的末端值;
若所述目标值不是所述目标ID段的末端值,则执行基于所述目标值进行递增的步骤。
4、根据条款3所述的方法,所述判断所述目标值是否为所述目标ID段的末端值之后还包括:
若所述目标值为所述目标ID段的末端值,则查询是否存在预先为所述应用服务分配的备用ID段;
若存在所述备用ID段,则基于所述备用ID段生成分布式全局唯一ID。
5、根据条款2或4所述的方法,所述基于所述备用ID段生成分布式全局唯一ID包括:
将所述备用ID段切换为所述应用服务的新目标ID段;
获取所述新目标ID段的新目标值;
基于所述新目标值进行递增,生成分布式全局唯一ID。
6、根据条款5所述的方法,所述将所述备用ID段切换为所述应用服务的新目标ID段之后还包括:
新建异步任务线程,为所述应用服务生成新备用ID段。
7、根据条款2所述的方法,所述查询是否存在预先为所述应用服务分配的备用ID段之后还包括:
若不存在所述备用ID段,则为所述应用服务生成备用ID段。
8、根据条款7所述的方法,所述为所述应用服务生成备用ID段包括:
获取预设数据库的自增数、预设初始值和缓冲容量;
基于所述自增数、预设初始值和缓冲容量生成所述应用服务的备用ID段。
9、一种分布式全局唯一ID生成系统,包括:
接收模块,适于接收分布式全局唯一ID的生成请求,并识别所述生成请求对应的应用服务;
第一查询模块,适于查询是否存在预先为所述应用服务分配的目标ID段;
获取模块,适于当存在所述目标ID段时,获取所述目标ID段的目标值;
第一生成模块,适于基于所述目标值进行递增,生成分布式全局唯一ID。
10、根据条款9所述的系统,还包括:
第二查询模块,适于当不存在所述目标ID段时,查询是否存在预先为所述应用服务分配的备用ID段;
第二生成模块,适于当存在所述备用ID段时,基于所述备用ID段生成分布式全局唯一ID。
11、根据条款10所述的系统,还包括判断模块:
所述判断模块,适于判断所述目标值是否为所述目标ID段的末端值;
当所述目标值不是所述目标ID段的末端值时,通过所述第一生成模块执行基于所述目标值进行递增的步骤。
12、根据条款11所述的系统,所述第二查询模块还适于:
当所述目标值为所述目标ID段的末端值时,查询是否存在预先为所述应用服务分配的备用ID段。
13、根据条款10所述的系统,所述第二生成模块还适于:
将所述备用ID段作为所述应用服务的新目标ID段;
获取所述新目标ID段的新目标值;
基于所述新目标值进行递增,生成分布式全局唯一ID。
14、根据条款13所述的系统,还包括:
第三生成模块,适于新建异步任务线程,为所述应用服务生成新备用ID段。
15、根据条款10所述的系统,还包括:
第四生成模块,适于当不存在所述备用ID段时,为所述应用服务生成备用ID段。
16、根据条款15所述的系统,所述第四生成模块还适于:
获取预设数据库的自增数、预设初始值和缓冲容量;
基于所述自增数、预设初始值和缓冲容量生成所述应用服务的备用ID段。
17、一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行条款1-8中任一项所述的分布式全局唯一ID生成方法。
18、一种计算设备,所述计算设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行条款1-8中任一项所述的分布式全局唯一ID生成方法。
Claims (10)
1.一种分布式全局唯一ID生成方法,其特征在于,包括:
接收分布式全局唯一ID的生成请求,并识别所述生成请求对应的应用服务;
查询是否存在预先为所述应用服务分配的目标ID段;
若存在所述目标ID段,则获取所述目标ID段的目标值;
基于所述目标值进行递增,生成分布式全局唯一ID。
2.根据权利要求1所述的方法,其特征在于,所述查询是否存在预先为所述应用服务分配的目标ID段之后,还包括:
若不存在所述目标ID段,则查询是否存在预先为所述应用服务分配的备用ID段;
若存在所述备用ID段,则基于所述备用ID段生成分布式全局唯一ID。
3.根据权利要求1所述的方法,其特征在于,所述获取所述目标ID段的目标值之后还包括:
判断所述目标值是否为所述目标ID段的末端值;
若所述目标值不是所述目标ID段的末端值,则执行基于所述目标值进行递增的步骤。
4.根据权利要求3所述的方法,其特征在于,所述判断所述目标值是否为所述目标ID段的末端值之后还包括:
若所述目标值为所述目标ID段的末端值,则查询是否存在预先为所述应用服务分配的备用ID段;
若存在所述备用ID段,则基于所述备用ID段生成分布式全局唯一ID。
5.根据权利要求2或4所述的方法,其特征在于,所述基于所述备用ID段生成分布式全局唯一ID包括:
将所述备用ID段切换为所述应用服务的新目标ID段;
获取所述新目标ID段的新目标值;
基于所述新目标值进行递增,生成分布式全局唯一ID。
6.根据权利要求5所述的方法,其特征在于,所述将所述备用ID段切换为所述应用服务的新目标ID段之后还包括:
新建异步任务线程,为所述应用服务生成新备用ID段。
7.根据权利要求2所述的方法,其特征在于,所述查询是否存在预先为所述应用服务分配的备用ID段之后还包括:
若不存在所述备用ID段,则为所述应用服务生成备用ID段。
8.一种分布式全局唯一ID生成系统,其特征在于,包括:
接收模块,适于接收分布式全局唯一ID的生成请求,并识别所述生成请求对应的应用服务;
第一查询模块,适于查询是否存在预先为所述应用服务分配的目标ID段;
获取模块,适于当存在所述目标ID段时,获取所述目标ID段的目标值;
第一生成模块,适于基于所述目标值进行递增,生成分布式全局唯一ID。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-7中任一项所述的分布式全局唯一ID生成方法。
10.一种计算设备,其特征在于,所述计算设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-7中任一项所述的分布式全局唯一ID生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770898.6A CN112115133A (zh) | 2020-08-04 | 2020-08-04 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770898.6A CN112115133A (zh) | 2020-08-04 | 2020-08-04 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112115133A true CN112115133A (zh) | 2020-12-22 |
Family
ID=73799366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010770898.6A Pending CN112115133A (zh) | 2020-08-04 | 2020-08-04 | 分布式全局唯一id生成方法和系统、存储介质、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115133A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742062A (zh) * | 2021-08-03 | 2021-12-03 | 深圳兆日科技股份有限公司 | 机器序列号的分配方法、装置及计算机可读存储介质 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成系统 |
CN115002078A (zh) * | 2022-05-11 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN116366609A (zh) * | 2023-06-02 | 2023-06-30 | 天津金城银行股份有限公司 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139255A (zh) * | 2011-11-30 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 分配资源标识和标识段的方法 |
CN106911780A (zh) * | 2017-02-28 | 2017-06-30 | 北京三快在线科技有限公司 | 业务id生成方法、装置及系统 |
CN109104490A (zh) * | 2018-08-29 | 2018-12-28 | 北京达佳互联信息技术有限公司 | 业务标识管理方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-04 CN CN202010770898.6A patent/CN112115133A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139255A (zh) * | 2011-11-30 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 分配资源标识和标识段的方法 |
CN106911780A (zh) * | 2017-02-28 | 2017-06-30 | 北京三快在线科技有限公司 | 业务id生成方法、装置及系统 |
CN109104490A (zh) * | 2018-08-29 | 2018-12-28 | 北京达佳互联信息技术有限公司 | 业务标识管理方法、装置、电子设备及存储介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742062A (zh) * | 2021-08-03 | 2021-12-03 | 深圳兆日科技股份有限公司 | 机器序列号的分配方法、装置及计算机可读存储介质 |
CN113742062B (zh) * | 2021-08-03 | 2024-02-09 | 深圳兆日科技股份有限公司 | 机器序列号的分配方法、装置及计算机可读存储介质 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成系统 |
CN115002078A (zh) * | 2022-05-11 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN115002078B (zh) * | 2022-05-11 | 2024-04-09 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN116366609A (zh) * | 2023-06-02 | 2023-06-30 | 天津金城银行股份有限公司 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
CN116366609B (zh) * | 2023-06-02 | 2023-09-01 | 天津金城银行股份有限公司 | 全局唯一标识生成方法、系统、计算机和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112115133A (zh) | 分布式全局唯一id生成方法和系统、存储介质、设备 | |
CN109344172B (zh) | 一种高并发数据处理方法、装置及客户端服务器 | |
CN101316226B (zh) | 一种获取资源的方法、装置及系统 | |
CN110737658A (zh) | 数据分片存储方法、装置、终端及可读存储介质 | |
CN105072160A (zh) | 一种流水号生成方法、装置及服务器 | |
CN103699618A (zh) | 数据报表的生成方法和系统 | |
CN106682167B (zh) | 用户行为数据的统计装置及方法 | |
CN105094981A (zh) | 一种数据处理的方法及装置 | |
CN112579515B (zh) | 线程消息处理方法及相关产品 | |
CN103248636A (zh) | 离线下载的系统及方法 | |
CN114138520B (zh) | 分布式消息处理方法及系统 | |
CN109739854A (zh) | 一种数据存储方法及装置 | |
CN112865927B (zh) | 消息送达验证方法、装置、计算机设备和存储介质 | |
CN114490100A (zh) | 一种消息队列遥测传输负载均衡方法、装置及服务器 | |
CN104618414A (zh) | 一种分布式服务的实现方法、服务代理装置及分布式系统 | |
CN111177269A (zh) | 基于结构化的区块链数据存储、获取方法及装置 | |
CN110555020B (zh) | 一种映射关系建立、数据查询方法、装置及设备 | |
CN107070987B (zh) | 用于分布式对象存储系统的数据获取方法及系统 | |
CN112019689A (zh) | 来电秀业务处理系统及方法 | |
CN105447141A (zh) | 一种数据处理的方法及节点 | |
CN104852986A (zh) | 一种新增功能的提供方法和设备 | |
CN107563942B (zh) | 一种物流数据批量处理方法、物流处理系统以及处理装置 | |
CN112162951A (zh) | 一种信息检索方法、服务器及存储介质 | |
CN115329005A (zh) | 多集群的协同方法、系统、装置及计算机可读存储介质 | |
CN112835896B (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: 20201222 |