雪花算法基本结构
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
算法具体介绍
下面的博客对雪花算法的分析很好,可以从第一篇到第七篇开始看
以上是关于雪花算法基本结构的主要内容,如果未能解决你的问题,请参考以下文章
Java实现雪花算法(snowflake)-生成永不重复的ID(源代码+工具类)使用案例