雪花算法
自己看到的较好的博客,记录一下
基本概念
无意义 | 时间戳 | 机房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/codeclock/p/12341666.html
时间: 2024-11-09 08:20:16