雪花算法

历史

  • Twitter使用scala语言开源了一种分布式 id 生成算法——SnowFlake算法,又称雪花算法。

  • 自然界中并不存在两片完全一样的雪花,雪花算法也表示生成的ID如雪花般独一无二。

组成

雪花算法生成的ID是一个64 bit的long型的数字且按时间趋势递增。由四部分组成:

  • 首位无效符(1bit):统一为 0
  • 时间戳(41bit):精确到毫秒,41位可以表示2^41-1毫秒,转化成单位年为 69 年。
  • 机器编码(10bit):其中高位 5 bit 是数据中心 ID,低位 5 bit 是工作节点 ID,最多可以容纳 1024 个节点。
  • 序列号(12bit):每个节点每毫秒0开始不断累加,最多可以累加到4095,一共可以产生 4096 个ID。

image-20220423201342337