一种高吞吐量的唯一ID发放方法、装置及存储介质制造方法及图纸

技术编号:33156526 阅读:8 留言:0更新日期:2022-04-22 14:13
本发明专利技术公开了一种高吞吐量的唯一ID发放方法、装置及存储介质,所述高吞吐量的唯一ID发放方法,包括:采用long类型的数据存储唯一ID,所述long类型的数据包括存储0或者1的最高位,用于存储时间戳的时间戳位,用于存储工作机器ID的标识位以及用于生成递增序列号的序列号位;获取唯一ID服务主机的当前绝对时间戳,通过公式相对时间戳T

【技术实现步骤摘要】
一种高吞吐量的唯一ID发放方法、装置及存储介质


[0001]本专利技术涉及分布式系统
,具体的涉及一种高吞吐量的唯一ID发放方法、装置及存储介质。

技术介绍

[0002]在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识、商品需要唯一标识、消息需要唯一标识、事件需要唯一标识等,都需要全局唯一ID,尤其是复杂的分布式业务场景中全局唯一ID更为重要。ID生成器都是分布式软件系统中必不可少的基础组件,而存在数据分片的场景的软件对于ID的要求除了保证唯一之外,还要求时序。现有能保证时序的方案都是基于雪花算法(snowflake)和批量缓存自增MaxID实现的。
[0003]雪花算法核心思想:把64

bit分别划分成多段,分开来标示机器、时间、某一并发序列等,从而使每台机器及同一机器生成的ID都是互不相同。时间戳占用的过多的bit位,单机吞吐量过低。
[0004]批量缓存自增MaxID核心思想:每次批量生成一批ID给不同的机器去慢慢消费,这样数据库的压力也会减小,且故障后可坚持一段时间。但是在多机的场景下,出现ID乱序的情况(因为处理落在不同的实例上,缓存的ID范围不一样的)。
[0005]在面临高吞吐且要保证时序的场景下,因为雪花单机吞吐量过低,必须要扩展更多的实例,才能满足高吞吐的要求。有鉴于此,特提出本专利技术专利。

技术实现思路

[0006]为了解决上述问题,本专利技术提供一种高吞吐量的唯一ID发放方法、装置及存储介质,具体地,采用了如下技术方案:
[0007]一种高吞吐量的唯一ID发放方法,包括:
[0008]采用long类型的数据存储唯一ID,所述long类型的数据包括存储0或者1的最高位,用于存储时间戳的时间戳位,用于存储工作机器ID的标识位以及用于生成递增序列号的序列号位;
[0009]获取唯一ID服务主机的当前绝对时间戳,通过公式相对时间戳T
相对
=当前绝对时间戳T
绝对

基准时间戳T0得到唯一ID服务主机的相对时间戳,将所述相对时间戳T
相对
写入所述long类型的数据的时间戳位,生成唯一ID。
[0010]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,所述时间戳位的位数Bit
时间
根据所述相对时间戳的时间精度基准确定,所述标识位的位数Bit
标识
根据系统的最大机器容量确定,所述序列号位的位数Bit
序列
由公式序列号位的位数Bit
序列
=long类型的数据总位数Bit

时间戳位的位数Bit
时间

标识位的位数Bit
标识

1计算得到;
[0011]可选地,所述时间精度基准为秒级,所述时间戳位的位数Bit时间小于或者等于30位。
[0012]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,将所述时间戳位的位数Bit
时间
控制为30位,将所述标识位的位数Bit
标识
控制为10位,所述序列号位的位数Bit
序列
为24位;
[0013]每个协程(或线程)针对所述序列号位可生成的号段[1,16777216]进行拆分多缓存,并发发号。
[0014]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,当所述唯一ID服务主机由当前绝对时间戳T
绝对
计算得到当前相对时间戳T
相对
所对应的唯一ID号段的剩余发放量N=0时,判断是否还有工作机器需要发放唯一ID;
[0015]若判断结果为是,则执行增量唯一ID发号过程:
[0016]将所述唯一ID服务主机的当前绝对时间戳T
绝对
自增n*T0后,向剩余需要发放唯一ID的工作机器继续发放由绝对时间戳T
绝对
+n*T0计算得到的相对时间戳所对应的唯一ID号段中的唯一ID;
[0017]其中n*T0为按照最小时间精度基准逐次自增,n为自增次数,所述n*T0小于等于系统允许时间戳误差η。
[0018]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,当所述唯一ID服务主机的当前绝对时间戳T
绝对2
更新为T
绝对1
+n*T0时,所述的绝对时间戳T
绝对1
为占用了当前绝对时间戳T
绝对2
的唯一ID的上一当前绝对时间戳,所述唯一ID服务主机在进行当前绝对时间戳T
绝对2
的唯一ID发放时,发放唯一ID的实际号数等于当前绝对时间戳T
绝对2
的理论发号数减去绝对时间戳T
绝对1
占用的发号数。
[0019]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,预设当前绝对时间戳T
绝对
的增量唯一ID发号过程中可占用未来绝对时间戳的唯一ID号数阈值N
max
,若当前绝对时间戳T
绝对
的增量唯一ID发号过程中发出的唯一ID号数达到号数阈值N
max
之后,仍然还有工作机器需要发放唯一ID,则进行工作机器排序等待。
[0020]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,若当前绝对时间戳T
绝对
需要执行t次增量唯一ID发号过程,所述当前绝对时间戳T
绝对
占用绝对时间戳T
绝对
+n1*T0唯一ID号数N1,占用绝对时间戳T
绝对
+n2*T0唯一ID号数N2,
……
,占用绝对时间戳T
绝对
+n
t
*T0唯一ID号数N
t
,所述的N1,N2,
……
,N
t
的值逐渐减小,
[0021]作为本专利技术的可选实施方式,本专利技术所述的一种高吞吐量的唯一ID发放方法中,针对所述增量唯一ID发号过程中的总发号量N增量进行监控,在预设时间段内,当N增量达到预设增量发号量时,则禁止执行所述增量唯一ID发号过程。
[0022]本专利技术同时提供一种高吞吐量的唯一ID发放装置,包括:
[0023]数据存储模块,采用long类型的数据存储唯一ID,所述long类型的数据包括存储0或者1的最高位,用于存储时间戳的时间戳位,用于存储工作机器ID的标识位以及用于生成递增序列号的序列号位;
[0024]以及唯一ID生成模块,获取唯一ID服务主机的当前绝对时间戳,通过公式相对时间戳T
相对
=当前绝对时间戳T
绝对

基准时间戳T0得到唯一ID服务主机的相对时间戳,将所述相对时间戳T
相对...

【技术保护点】

【技术特征摘要】
1.一种高吞吐量的唯一ID发放方法,其特征在于,包括:采用long类型的数据存储唯一ID,所述long类型的数据包括存储0或者1的最高位,用于存储时间戳的时间戳位,用于存储工作机器ID的标识位以及用于生成递增序列号的序列号位;获取唯一ID服务主机的当前绝对时间戳,通过公式相对时间戳T
相对
=当前绝对时间戳T
绝对

基准时间戳T0得到唯一ID服务主机的相对时间戳,将所述相对时间戳T
相对
写入所述long类型的数据的时间戳位,生成唯一ID。2.根据权利要求1所述的一种高吞吐量的唯一ID发放方法,其特征在于,所述时间戳位的位数Bit
时间
根据所述相对时间戳的时间精度基准确定,所述标识位的位数Bit
标识
根据系统的最大机器容量确定,所述序列号位的位数Bit
序列
由公式序列号位的位数Bit
序列
=long类型的数据总位数Bit

时间戳位的位数Bit 时间

标识位的位数Bit
标识

1计算得到;可选地,所述时间精度基准为秒级,所述时间戳位的位数Bit时间小于或者等于30位。3.根据权利要求2所述的一种高吞吐量的唯一ID发放方法,其特征在于,将所述时间戳位的位数Bit
时间
控制为30位,将所述标识位的位数Bit
标识
控制为10位,所述序列号位的位数Bit
序列
为24位;每个协程(或线程)针对所述序列号位可生成的号段[1,16777216]进行拆分多缓存,并发发号。4.根据权利要求1

3任意一项所述的一种高吞吐量的唯一ID发放方法,其特征在于,当所述唯一ID服务主机由当前绝对时间戳T
绝对
计算得到当前相对时间戳T
相对
所对应的唯一ID号段的剩余发放量N=0时,判断是否还有工作机器需要发放唯一ID;若判断结果为是,则执行增量唯一ID发号过程:将所述唯一ID服务主机的当前绝对时间戳T
绝对
自增n*T0后,向剩余需要发放唯一ID的工作机器继续发放由绝对时间戳T
绝对
+n*T0计算得到的相对时间戳所对应的唯一ID号段中的唯一ID;其中n*T0为按照最小时间精度基准逐次自增,n为自增次数,所述n*T0小于等于系统允许时间戳误差η。5.根据权利要求4所述的一种高吞吐量的唯一ID发放方法,其特征在于,当所述唯一ID服务主机的当前绝对时间戳T
绝对2
更新为T
绝对1
+n*...

【专利技术属性】
技术研发人员:王飞
申请(专利权)人:瞰客信息科技上海有限公司
类型:发明
国别省市:

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

1