分布式唯一序列生成方法、装置和存储介质制造方法及图纸

技术编号:32345640 阅读:52 留言:0更新日期:2022-02-20 02:00
本公开提出一种分布式唯一序列生成方法、装置和存储介质,涉及计算机技术领域。本公开的一种分布式唯一序列生成方法包括:初始化起始自增值和自增值最大值;根据从起始自增值开始的自增值和生成时间,生成序列,其中:在自增值未达到自增值最大值的情况下,每生成一个序列自增值增加预定量;在自增值达到自增值最大值的情况下,自增值重置为起始自增值,并暂停产生序列,直至到达下一单位时间。通过这样的方法,能够避免在时间戳相同的情况下由于自增值达到最大值后重置产生相同的序列,在预定时间精度的情况下提高序列生成效率。间精度的情况下提高序列生成效率。间精度的情况下提高序列生成效率。

【技术实现步骤摘要】
分布式唯一序列生成方法、装置和存储介质


[0001]本公开涉及计算机
,特别是一种分布式唯一序列生成方法、装置和存储介质。

技术介绍

[0002]在很多分布式系统中,需要生成唯一的标识序列,如在分库分表的情况下,给某个逻辑表生成唯一标识。既要保证标识的唯一性,也需要保证生成标识的性能。

技术实现思路

[0003]本公开的一个目的在于在预定时间精度的情况下提高序列生成效率。
[0004]根据本公开的一些实施例的一个方面,提出一种分布式唯一序列生成方法,包括:初始化起始自增值和自增值最大值;根据从起始自增值开始的自增值和生成时间,生成序列,其中:在自增值未达到自增值最大值的情况下,每生成一个序列自增值增加预定量;在自增值达到自增值最大值的情况下,自增值重置为起始自增值,并暂停产生序列,直至到达下一单位时间。
[0005]在一些实施例中,单位时间与序列的时间戳的精度相匹配。
[0006]在一些实施例中,时间戳为41位2进制值,单位时间为1毫秒。
[0007]在一些实施例中,分布式唯一序列生成方法还包括:配置数据中心序号、用户组序号和实例序号;根据从起始自增值开始的自增值和生成时间,生成序列包括:根据从起始自增值开始的自增值和生成时间,基于配置的数据中心序号、用户组序号和实例序号,生成包括时间戳、用户组序号、数据中心序号、实例序号和自增值的序列。
[0008]在一些实施例中,实例序号为在初始化过程中配置,不同实例的实例标识不同;当获取用户组序号和数据中心序号后,执行根据从起始自增值开始的自增值和生成时间,生成序列的操作。
[0009]在一些实施例中,序列为64为二进制值,其中,用户组序号、数据中心序号和实例序号各占5位,自增值占8位。
[0010]在一些实施例中,自增值最大值不大于自增值在序列中占的空间能够表示的最大值。
[0011]通过这样的方法,能够在自增值空间内生成包括时间和逐渐增大的自增值的序列,且在单位时间内自增值达到最大值的情况下,暂停生成序列,直至到达下一单位时间,从而避免在时间戳相同的情况下由于自增值达到最大值后重置造成产生相同的序列,在预定时间精度下提高序列生成效率。
[0012]根据本公开的另一些实施例的一个方面,提出一种分布式唯一序列生成装置,包括:初始化单元,被配置为初始化起始自增值和自增值最大值;序列生成单元,被配置为根据从起始自增值开始的自增值和生成时间,生成序列,其中:在自增值未达到自增值最大值的情况下,每生成一个序列自增值增加预定量;在自增值达到自增值最大值的情况下,自增
值重置为起始自增值,并暂停产生序列,直至到达下一单位时间。
[0013]在一些实施例中,序列生成单元被配置为根据从起始自增值开始的自增值和生成时间,基于数据中心序号、用户组序号和实例序号,生成包括时间戳、用户组序号、数据中心序号、实例序号和自增值的序列。
[0014]在一些实施例中,初始化单元还被配置为初始化实例序号;分布式唯一序列生成装置还包括:触发单元,被配置为在获取用户组序号和数据中心序号后,触发序列生成单元执行操作。
[0015]根据本公开的另一些实施例的一个方面,提出一种分布式唯一序列生成装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行上文中提到的任意一种分布式唯一序列生成方法。
[0016]这样的分布式唯一序列生成装置能够在自增值空间内生成包括时间和逐渐增大的自增值的序列,且在单位时间内自增值达到最大值的情况下,暂停生成序列,直至到达下一单位时间,从而避免在时间戳相同的情况下由于自增值达到最大值后重置产生相同的序列,在预定时间精度下提高序列生成效率。
[0017]根据本公开的另一些实施例的一个方面,提出一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上文中提到的任意一种分布式唯一序列生成方法的步骤。
[0018]通过执行这样的存储介质上的指令,能够在自增值空间内生成包括时间和逐渐增大的自增值的序列,且在单位时间内自增值达到最大值的情况下,暂停生成序列,直至到达下一单位时间,从而避免在时间戳相同的情况下由于自增值达到最大值后重置产生相同的序列,在预定时间精度下提高序列生成效率。
附图说明
[0019]此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
[0020]图1为本公开的分布式唯一序列生成方法的一些实施例的流程图。
[0021]图2为本公开的分布式唯一序列生成方法中生成的序列格式的一些实施例的示意图。
[0022]图3为本公开的分布式唯一序列生成方法的另一些实施例的流程图。
[0023]图4为本公开的分布式唯一序列生成装置的一些实施例的示意图。
[0024]图5为本公开的分布式唯一序列生成装置的另一些实施例的示意图。
[0025]图6为本公开的分布式唯一序列生成装置的又一些实施例的示意图。
具体实施方式
[0026]下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
[0027]本公开的分布式唯一序列生成方法的一些实施例的流程图如图1所示。
[0028]在步骤101中,初始化起始自增值和自增值最大值,例如,初始化起始自增值为0,自增值最大值为不大于自增值在序列中所占字段能够表示的最大值,如自增值占8位二进制数,则自增值最大值可以为2
9-1。
[0029]在步骤102中,判断自增值是否达到自增值最大值。若未达到自增值最大值,则执行步骤103;若达到自增值最大值,则执行步骤105。
[0030]在步骤103中,根据当前的自增值和当前的时间生成包含时间戳和自增值信息的序列,进而执行步骤104。
[0031]在步骤104中,自增值增大预定量,例如加1。在一些实施例中,预定量为预定正整数。
[0032]在步骤105中,将自增值重置为起始自增值,并暂停产生序列,并执行步骤106。
[0033]在步骤106中,判断是否到下一单位时间。在一些实施例中,单位时间与序列的时间戳的精度相匹配,例如,时间戳能够标识的最小时间单位为1毫秒,则单位时间为1毫秒。若到达下一单位时间,则执行步骤103,否则继续等待。
[0034]通过这样的方法,能够在自增值空间内生成包括时间和逐渐增大的自增值的序列,且在单位时间内自增值达到最大值的情况下,暂停生成序列,直至到达下一单位时间,从而避免在时间戳相同的情况下由于自增值达到最大值后重置产生相同的序列,在预定时间精度下保证生成序列的唯一性,提高序列生成效率。
[0035]在一些实施例中,序列中除了包含时间戳和自增值,还可以包括数据中心序号、用户组序号和实例序号,如图2所示(图中的1仅代表占用1位二进制空间,不限制二进制空间的具体内容)。序列为64为二进制值本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式唯一序列生成方法,包括:初始化起始自增值和自增值最大值;根据从所述起始自增值开始的自增值和生成时间,生成序列,其中:在自增值未达到所述自增值最大值的情况下,每生成一个序列所述自增值增加预定量;在自增值达到所述自增值最大值的情况下,所述自增值重置为所述起始自增值,并暂停产生所述序列,直至到达下一单位时间。2.根据权利要求1所述的方法,其中,所述单位时间与所述序列的时间戳的精度相匹配。3.根据权利要求2所述的方法,其中,所述时间戳为41位2进制值,所述单位时间为1毫秒。4.根据权利要求1所述的方法,还包括:配置数据中心序号、用户组序号和实例序号;所述根据从所述起始自增值开始的自增值和生成时间,生成序列包括:根据从所述起始自增值开始的自增值和生成时间,基于配置的所述数据中心序号、用户组序号和实例序号,生成包括时间戳、用户组序号、数据中心序号、实例序号和自增值的序列。5.根据权利要求4所述的方法,其中,所述实例序号为在初始化过程中配置,不同实例的所述实例标识不同;当获取所述用户组序号和所述数据中心序号后,执行根据从所述起始自增值开始的自增值和生成时间,生成序列的操作。6.根据权利要求4所述的方法,其中,所述序列为64为二进制值,其中,所述用户组序号、所述数据中心序号和所述实例序号各占5位,所述自增值占8位。7.根据权利要求...

【专利技术属性】
技术研发人员:华竹轩伍运珍池炜成张金娟刘智琼朱明英陈娜李舒婷俞科峰
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

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

1