聊一聊Twitter的雪花算法
创始人
2025-07-02 02:10:47
0

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

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

(1) ID是唯一且可排序的

(2) ID包含时间信息(按日期排序)

(3) ID适用于64位无符号整数

(4) 仅包含数字值

  • 符号位(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位用于序列数据。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...