雪花算法基本结构

Posted codeclock

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了雪花算法基本结构相关的知识,希望对你有一定的参考价值。

雪花算法

自己看到的较好的博客,记录一下

基本概念

无意义 时间戳 机房ID 机器ID 序号
0 0001100 10111110 10001001 01000111 10100010 00 10001 1 1001 0000 00000000
1bit 41bit 5bit 5bit 12bit
  • 第一个部分,是 1 个 bit:0,这个是无意义的。

    因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。

  • 第二个部分是 41 个 bit:表示的是时间戳。

    41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ^ 41 - 1 个毫秒值,换算成年就是表示 69 年的时间。

  • 第三个部分是 5 个 bit:表示的是机房 id,10001。

    5 个 bit 代表机房,id意思就是最多代表 2 ^ 5 个机房(32 个机房)。

  • 第四个部分是 5 个 bit:表示的是机器 id,1 1001。

    5 个 bit 代表机器 id,每个机房里可以代表 2 ^ 5 个机器(32 台机器)。

  • 第五个部分是 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 00000000。

    12 bit 可以代表的最大正整数是 2 ^ 12 - 1 = 4096,也就是说可以用这个 12 bit 代表的数字来区分同一个毫秒内的 4096 个不同的 id。

参考博客 https://blog.csdn.net/lq18050010830/article/details/89845790

算法具体介绍

下面的博客对雪花算法的分析很好,可以从第一篇到第七篇开始看

博客园:https://www.cnblogs.com/guos/p/11357422.html (1-7)

以上是关于雪花算法基本结构的主要内容,如果未能解决你的问题,请参考以下文章

高级数据结构 ---- 跳跃表布隆过滤器一致性哈希雪花算法

雪花算法生成id

snowflake 雪花算法 唯一ID

Java实现雪花算法(snowflake)-生成永不重复的ID(源代码+工具类)使用案例

Java实现雪花算法(snowflake)-生成永不重复的ID(源代码+工具类)使用案例

雪花算法源码