天天看点

说说生成唯一 ID 的雪花算法是怎么样的?

说说生成唯一 ID 的雪花算法是怎么样的?

每天一道面试题 16

悟空拧螺丝 2021-07-28

snowflake

(雪花算法):Twitter 开源的分布式 id 生成算法,64 位的 long 型的 id,分为 4 部分:

  • 1 bit:不用,统一为 0
  • 41 bits:毫秒时间戳,可以表示 69 年的时间。
  • 10 bits:5 bits 代表机房 id,5 个 bits 代表机器 id。最多代表 32 个机房,每个机房最多代表 32 台机器。
  • 12 bits:同一毫秒内的 id,最多 4096 个不同 id,自增模式
  • 毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。
  • 不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的。
  • 可以根据自身业务特性分配bit位,非常灵活。
  • 强依赖机器时钟,如果机器上时钟回拨(可以搜索 2017 年闰秒 7:59:60),会导致发号重复或者服务会处于不可用状态。

继续阅读