雪花算法(SnowFlake),是Twitter开源
的分布式ID生成算法
主要是由 64bit 的 long 型生成的全局 ID,
其中分为四个部分:
① 最高1位固定值 0,因为生成的 id
是正整数
② 后面的41位存储毫秒级时间戳
③ 第三部分的10位存储机器码,包括
5位 datacenterId 和5位 workerId
最多可以部署 2^10=1024 台机器
④ 最后12位为存储序列号。同一毫秒
时间戳时,通过这个递增的序列号
来区分。即对于同一台机器而言,
同一毫秒时间戳下,可以生成
2^12=4096 个不重复 id
总的来说就是一个机房,一台机器,
在同一号毫秒时产生的 ID,可能在
同一秒钟产生不同的 ID,最后 12
bit 序列号可以区分在同一秒钟的不
同 ID.
雪花算法的保证:
① 所生成的ID按时间递增
② 整个分布式系统不会有重复的ID