介绍:
snowflake是 Twitter公司 开源的 分布式ID生成 算法
2020年8月4日,《苏州高新区·2020胡润全球独角兽榜》发布,雪花算法排名第17位
那么,本人来通过 一张图 基本展示下 雪花算法
的 原理:
原理:
相信有同学不理解上图的内容,
那么,本人来 解释 下上图的内容:
解释:
- 最高位是符号位,始终为0,不可用。
- 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。
时间位还有一个很重要的作用是可以根据时间进行排序。
注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) 后得到的值,
这里的 开始时间戳,一般是我们的 id生成器开始使用的时间,
由我们程序来指定的(如下下面程序SnowFlake类的START_STMP属性)
41位 的时间截,可以使用69年,
$$ 年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69 $$- 10位的机器标识,
(5bit是 数据中心,5bit是 机器ID)
10位的长度最多支持部署1024个节点。- 12位的计数序列号,序列号即一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持 每个节点每毫秒 产生4096个ID序号
加起来刚好64位,为一个Long型。这个算法很简洁,但依旧是一个很好的ID生成策略