首页 > 解决方案 > 系统设计问题(Twitter 雪花)

问题描述

在公司 A,我们希望为每种类型的事件分配一个唯一的 ID(例如,为每个注册用户指定一个新的用户 ID,或为每次发生的新行程分配一个新的行程 ID)。除了唯一性要求,我们还有其他要求:

  1. 系统必须是高性能和可扩展的,它可能需要处理大量的 RPS(例如,我们每天有 14MM+ 的行程,而高峰日的数量甚至更多)
  2. 该系统还必须具有非常高的可用性,并且没有 SPOF 等。
  3. id 应该大致是连续的。但是我们可以接受 id 中的一些空白
  4. 生成,意味着 id 不需要像 1,2,3,4 那样严格按顺序排列。id 空间应该足够大 - 例如 64 位数可以,但 32 位数不会(公司 A 将有超过 10B 或 100B 的行程,32 位数不够大)

标签: mysql

解决方案


您可以尝试使用基于时间的 GUID,它部分是从时间戳生成的。


推荐阅读