聊一聊Twitter的雪花算法

什么是Twitter的雪花算法方法?

这是一种在分布式系统中生成唯一ID的解决方案。Twitter在推文、私信、列表等方面使用这种方法。

•ID是唯一且可排序的•ID包含时间信息(按日期排序)•ID适用于64位无符号整数•仅包含数字值

符号位(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位用于序列数据。
更多精彩~

相关推荐
Stanford_11066 小时前
高级的SQL查询技巧有哪些?
sql·微信小程序·twitter·微信开放平台
freewind4 天前
如何高效获取Twitter数据:Apify平台上的推特数据采集解决方案
twitter
130252015127 天前
哪些视频媒体平台可给企业直播间做分发拉流转播宣传?提升流量数据!
音视频·媒体·twitter
Stanford_110622 天前
什么是人工智能大模型?
c++·人工智能·微信小程序·微信公众平台·twitter·微信开放平台
Stanford_110623 天前
关于IDE的相关知识之三【插件安装、配置及推荐的意义】
c++·ide·微信小程序·微信公众平台·twitter·微信开放平台
Stanford_110624 天前
C++游戏开发入门:如何从零开始实现自己的游戏项目?
c++·游戏·微信小程序·c·微信公众平台·twitter·微信开放平台
wangye1142224 天前
国外媒体发布新闻稿/海外媒体网站发稿创历史新潮流
人工智能·twitter
Stanford_11061 个月前
关于IDE的相关知识之一【使用技巧】
前端·ide·windows·微信小程序·微信公众平台·twitter·微信开放平台
Stanford_11061 个月前
用c++做游戏开发至少要掌握哪些知识?
开发语言·c++·微信小程序·c·微信公众平台·twitter·微信开放平台
Stanford_11061 个月前
C++入门基础知识150—【关于C++ 输入/输出运算符重载】
前端·javascript·c++·微信小程序·微信公众平台·twitter·微信开放平台