分布式ID生成方法、装置、电子设备及计算机程序产品制造方法及图纸

技术编号:37102259 阅读:25 留言:0更新日期:2023-04-01 05:02
本申请提供一种分布式ID生成方法、装置、电子设备及计算机程序产品,该方法包括:根据原始节点ID得到节点事件的目标节点ID;根据节点事件的节点时间和预设机器时间,得到节点事件的数据位;根据原始自增序列和节点事件的节点类型,得到节点事件的目标自增序列;根据预设随机数位生成方法生成节点事件的随机数位;根据目标节点ID、数据位、目标自增序列和随机数位,生成节点事件的分布式ID。本申请实施例提供的分布式ID生成方法不依赖于机器时钟,可以避免由于机器时钟回拨导致生成重复ID的问题。题。题。

【技术实现步骤摘要】
分布式ID生成方法、装置、电子设备及计算机程序产品


[0001]本申请涉及数据处理
,尤其涉及一种分布式ID生成方法、装置、电子设备及计算机程序产品。

技术介绍

[0002]现有的分布式ID生成方法主要使用的方法为雪花算法。雪花算法的使用过程过于依赖机器时钟,即在雪花算法的使用过程中,一旦出现机器时钟回拨的异常,则会导致生成重复的ID。

技术实现思路

[0003]本申请提供一种分布式ID生成方法、装置、电子设备及计算机程序产品,旨在解决时钟回拨导致生成重复ID的问题。
[0004]第一方面,本申请提供一种分布式ID生成方法,包括:
[0005]根据原始节点ID得到节点事件的目标节点ID;
[0006]根据所述节点事件的节点时间和预设机器时间,得到所述节点事件的数据位;
[0007]根据原始自增序列和所述节点事件的节点类型,得到所述节点事件的目标自增序列;
[0008]根据预设随机数位生成方法生成所述节点事件的随机数位;
[0009]根据所述目标节点ID、所述数据位、所述目标自增序列和所述随机数位,生成所述节点事件的分布式ID。
[0010]在一个实施例中,所述根据所述目标节点ID、所述数据位、所述目标自增序列和所述随机数位,生成所述节点事件的分布式ID的步骤包括:
[0011]将所述数据位确定为第二位信息,并将所述目标节点ID确定为第三位信息;
[0012]将所述目标自增序列确定为第四位信息,并将所述随机数位确定为第五位信息
[0013]将预设的第一位信息、所述第二位信息、所述第三位信息、所述第四位信息和所述第五位信息进行依次拼接,生成所述分布式ID。
[0014]所述根据预设随机数位生成方法生成所述节点事件的随机数位的步骤包括:
[0015]将伪随机数生成器生成的种子数输入至线性同余生成器中,生成对应的第一输出种子数和第二输出种子数;
[0016]将所述第一输出种子数和所述第二输出种子数输入至大数生成器中,生成对应的第一输出长数;
[0017]按照第一预设长度对所述第一输出长数进行分组,得到预设组的随机数输出,并将各个所述随机数输出确定为所述随机数位。
[0018]所述根据预设随机数位生成方法生成所述节点事件的随机数位的步骤包括:
[0019]按照第二预设长度对伪随机数生成器、线性同余生成器和大数生成器生成的第二输出长数进行扩增,并根据扩增后的第二输出长数生成对应的第一数组;
[0020]根据所述扩增后的第二输出长数中预设位数的随机数,生成对应的第二数组;
[0021]根据所述第一数组和所述第二数组的乘积,生成所述节点事件的随机数位。
[0022]所述根据所述第一数组和所述第二数组的乘积,生成所述节点事件的随机数位的步骤包括:
[0023]根据所述第二输出长数的长度和所述第二预设长度确定第一计数值,并根据所述第二数组的数组长度确定第二计数值;
[0024]根据所述第一计数值和所述第二计数值,将所述第一数组和所述第二数组中的各个数字一一对应相乘,得到各组对应的乘积值;
[0025]根据所述各组对应的乘积值和所述第一计数值,生成所述节点事件的随机数位。
[0026]所述根据所述各组对应的乘积值和所述第一计数值,生成所述节点事件的随机数位的步骤包括:
[0027]将所述各组对应的乘积值进行预设逻辑运算,得到所述各组对应的目标值;
[0028]确定所述预设逻辑运算的运算次数是否等于所述第一计算值;
[0029]若所述运算次数等于所述第一计算值,则根据所述各组的目标值生成目标输出长数,并根据所述目标输出长数生成所述随机数位。
[0030]所述根据原始自增序列和所述节点事件的节点类型,得到所述节点事件的目标自增序列的步骤包括:
[0031]若所述节点类型为重启节点类型,则在所述原始自增序列的基础上自增预设值,得到所述目标自增序列;
[0032]若所述节点类型为新增节点类型,则对所述原始自增序列进行归零,并在归零后的原始自增序列的基础上自增预设值,得到所述目标自增序列。
[0033]第二方面,本申请还提供一种分布式ID生成装置包括:
[0034]确定模块,用于根据原始节点ID得到节点事件的目标节点ID;
[0035]计算模块,用于根据所述节点事件的节点时间和预设机器时间,得到所述节点事件的数据位;
[0036]处理模块,用于根据原始自增序列和所述节点事件的节点类型,得到所述节点事件的目标自增序列;
[0037]第一生成模块,用于根据预设随机数位生成方法生成所述节点事件的随机数位;
[0038]第二生成模块,用于根据所述目标节点ID、所述数据位、所述目标自增序列和所述随机数位,生成所述节点事件的分布式ID。
[0039]第三方面,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述分布式ID生成方法的步骤。
[0040]第四方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被所述处理器执行时实现第一方面所述分布式ID生成方法的步骤。
[0041]本申请提供的分布式ID生成方法、装置、电子设备及计算机程序产品,在生成分布式ID的过程中,目标节点ID的生成过程没有依赖机器时钟,目标自增序列的生成过程也没有依赖机器时钟,以及随机数位的生成过程也没有依赖机器时钟,从而使得目标节点ID、数据位、目标自增序列和随机数位生成的分布式ID没有依赖机器时钟,从而避免由于机器时
钟回拨导致生成重复ID的问题。
附图说明
[0042]为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]图1是本申请提供的分布式ID生成方法的流程示意图之一;
[0044]图2是本申请提供的分布式ID生成方法的流程示意图之二;
[0045]图3是本申请提供的分布式ID生成方法的流程示意图之三;
[0046]图4是本申请提供的分布式ID生成方法的乘积值计算示意图;
[0047]图5是本申请提供的分布式ID生成装置的结构示意图;
[0048]图6是本申请提供的电子设备的结构示意图。
具体实施方式
[0049]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式ID生成方法,其特征在于,包括:根据原始节点ID得到节点事件的目标节点ID;根据所述节点事件的节点时间和预设机器时间,得到所述节点事件的数据位;根据原始自增序列和所述节点事件的节点类型,得到所述节点事件的目标自增序列;根据预设随机数位生成方法生成所述节点事件的随机数位;根据所述目标节点ID、所述数据位、所述目标自增序列和所述随机数位,生成所述节点事件的分布式ID。2.根据权利要求1所述的分布式ID生成方法,其特征在于,所述根据所述目标节点ID、所述数据位、所述目标自增序列和所述随机数位,生成所述节点事件的分布式ID的步骤包括:将所述数据位确定为第二位信息,并将所述目标节点ID确定为第三位信息;将所述目标自增序列确定为第四位信息,并将所述随机数位确定为第五位信息;将预设的第一位信息、所述第二位信息、所述第三位信息、所述第四位信息和所述第五位信息进行依次拼接,生成所述分布式ID。3.根据权利要求1所述的分布式ID生成方法,其特征在于,所述根据预设随机数位生成方法生成所述节点事件的随机数位的步骤包括:将伪随机数生成器生成的种子数输入至线性同余生成器中,生成对应的第一输出种子数和第二输出种子数;将所述第一输出种子数和所述第二输出种子数输入至大数生成器中,生成对应的第一输出长数;按照第一预设长度对所述第一输出长数进行分组,得到预设组的随机数输出,并将各个所述随机数输出确定为所述随机数位。4.根据权利要求1所述的分布式ID生成方法,其特征在于,所述根据预设随机数位生成方法生成所述节点事件的随机数位的步骤包括:按照第二预设长度对伪随机数生成器、线性同余生成器和大数生成器生成的第二输出长数进行扩增,并根据扩增后的第二输出长数生成对应的第一数组;根据所述扩增后的第二输出长数中预设位数的随机数,生成对应的第二数组;根据所述第一数组和所述第二数组的乘积,生成所述节点事件的随机数位。5.根据权利要求4所述的分布式ID生成方法,其特征在于,所述根据所述第一数组和所述第二数组的乘积,生成所述节点事件的随机数位的步骤包括:根据所述第二输出长数的长度和所述第二预设长度确定第一计数值,...

【专利技术属性】
技术研发人员:张树新张淼白波
申请(专利权)人:中国移动通信集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1