雪花算法
雪花算法
什么是雪花算法
雪花算法用于生成全局唯一ID
符号位 | 时间戳 | 机器码 | 序列号
符号位:占一位,固定为0
时间戳:占41位(毫秒级),当前Unix时间-自定义时间
机器ID:占10位
序列号:占12位,同一毫秒内递增有序
雪花算法生成的ID为什么是有序的?
高位是时间戳
时间戳随时间递增
同一时间内按序列号递增
雪花算法生成的ID是绝对有序的吗?
不是100%全局有序的
时钟回拨问题:回调时间,可能会生成重复ID
解决办法:
等待补偿:检测到时间回拨之后,程序进入休眠至时间追平
回拨容错位:在机器位预留几位,发生时间回拨之后进行标记,防止重复
机器位重复:生成相同的机器位
解决办法:使用Zookeeper动态分配机器ID
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 青云小筑
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果