首页 > 编程语言 > 详细

雪花算法

时间:2019-08-21 11:48:30      阅读:144      评论:0      收藏:0      [点我收藏+]
在分布式系统中,会有生成全局唯一ID的需求,已有的解决方案中,UUID不便于索引,全局ID生成器自身会有性能瓶颈,雪花算法则很好的解决了这两个问题
雪花算法生成的是一个64位的LONG值,主要由以下四个部分组成
1、1位的保留位
2、41位的时间戳(可以保证69年不重复)
3、10位的机器ID(可供1024台机器使用)
4、12位的自增序列号(从1-4096中循环使用)
基于雪花算法的设计原则(时间戳+机器号+自增号)可以很方便的设计出符合自己需要的ID生成器,需要注意的是,雪花算法依赖于机器自身的时间,如果机器自身的时间存在问题,则可能出现重复ID,这个问题可以在生成器初始化时,连接时间服务器来解决。
GITHUB上的雪花算法基于scala实现:
https://github.com/twitter/snowflake
基于Java的实现可参考,这个实现与twitter的实现略有不同,使用了保留位,可以生成139年不重复的ID:
https://www.callicoder.com/distributed-unique-id-sequence-number-generator/
            

雪花算法

原文:https://www.cnblogs.com/yytxdy/p/11387746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!