美文网首页
timechannel分布式GUID的设计(snowflake的

timechannel分布式GUID的设计(snowflake的

作者: 毕成功Antony | 来源:发表于2022-08-20 22:18 被阅读0次

timechannel算法的由来

受snowflake算法的启发,我们把64个bit位拆分成两个部分,一个部分是时间,另外一个部分是序列号,这样就可以看成一个二维的空间。然后我们将序列号bit位再分成两个部分,前部是频道,后部是序号,那么每个频道都会包含一组私有的序号。这个结构就像是把时间轴线上有很多频道,所以命名为timechannel。


timechannel.jpg

bit位的划分

默认划分如下:

timechannel-bit.jpg
项目中允许自由配置分段,在实现中增加了group的概念,但默认为0 bit。
完整bit划分如下:
1-bit unused + 42-bit timestamp + 0-bit group + 11-bit channel + 12-bit sequence = 64

算法的实现

租约的申请与续期

为了保证guid生成的效率,项目中采用异步线程的提前续期,续期间隔为ttl的1/2


timechannel-lease.jpg

guid的生成

此项与大多数实现都相似,只是这里用了租约,简化了这部分的实现。


timechannel-generate.jpg

项目开源地址

antonybi/timechannel.java: Lightweight GUID SDK (github.com)


注:本文档为GitHub开源项目README的补充内容,更多内容请点击查看timechannel开源项目。

相关文章

网友评论

      本文标题:timechannel分布式GUID的设计(snowflake的

      本文链接:https://www.haomeiwen.com/subject/nqlbgrtx.html