UwD28资讯网——每日最新资讯28at.com
什么是Twitter的雪花算法方法?
这是一种在分布式系统中生成唯一ID的解决方案。Twitter在推文、私信、列表等方面使用这种方法。UwD28资讯网——每日最新资讯28at.com
(1) ID是唯一且可排序的UwD28资讯网——每日最新资讯28at.com
(2) ID包含时间信息(按日期排序)UwD28资讯网——每日最新资讯28at.com
(3) ID适用于64位无符号整数UwD28资讯网——每日最新资讯28at.com
(4) 仅包含数字值UwD28资讯网——每日最新资讯28at.com
- 符号位(1位):保留位(始终为0)。这可以为将来的请求保留。它可以潜在地用于使整体数字为正数。
- 时间戳(41位):以毫秒为单位的纪元时间戳(雪花的默认纪元等于2010年11月04日01:42:54 UTC)
- 机器ID(10位):可容纳1024台机器
- 序列号(12位):每台机器上的本地计数器,每次增加1。该数字在每毫秒重置为0。从理论上讲,一台机器每秒最多可以支持4096(2¹²)个新ID。
Twitter雪花算法方法的优缺点
- 它长度为64位,是UUID的一半大小
- 可扩展性强(可容纳1024台机器)
- 高可用性(每台机器每毫秒可以生成4096个唯一ID)
- 一些UUID版本不包含时间戳。在这种情况下,Twitter雪花算法具有可排序的优势。
- 设计需要Zookeeper(缺点)
- 生成的ID不像UUID那样是随机的。将来的ID可以预测。
- 41位中可以表示的最大时间戳(约69年)。需要在此之后找到解决方案 :)
使用注意事项
- Discord使用雪花算法,将其纪元设置为2015年的第一秒。
- Instagram使用了格式的修改版本,其中41位用于时间戳,13位用于分片ID,10位用于序列号。
- Mastodon的修改格式具有48位的毫秒级时间戳,它使用了UNIX纪元。剩下的16位用于序列数据。
本文链接:http://www.28at.com/showinfo-26-10910-0.html聊一聊Twitter的雪花算法
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: C++函数式编程:提高代码表达力和可维护性
下一篇: 一文读懂分布式追踪的历史发展点滴
标签: