雪花算法
历史
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。