mysql - 系统设计问题(Twitter 雪花)
问题描述
在公司 A,我们希望为每种类型的事件分配一个唯一的 ID(例如,为每个注册用户指定一个新的用户 ID,或为每次发生的新行程分配一个新的行程 ID)。除了唯一性要求,我们还有其他要求:
- 系统必须是高性能和可扩展的,它可能需要处理大量的 RPS(例如,我们每天有 14MM+ 的行程,而高峰日的数量甚至更多)
- 该系统还必须具有非常高的可用性,并且没有 SPOF 等。
- id 应该大致是连续的。但是我们可以接受 id 中的一些空白
- 生成,意味着 id 不需要像 1,2,3,4 那样严格按顺序排列。id 空间应该足够大 - 例如 64 位数可以,但 32 位数不会(公司 A 将有超过 10B 或 100B 的行程,32 位数不够大)
解决方案
您可以尝试使用基于时间的 GUID,它部分是从时间戳生成的。
推荐阅读
- quarkus - Quarkus 原生可执行构建:高内存消耗
- powershell - 通过远程运行空间运行时 PowerShell RemoteException 不一致
- jmeter - 对话框内的jmeter字体大小
- html - 保留属性的在线 HTML 编辑器
- python - 如何使用 pytube 在 for 循环(每个链接)中下载 YouTube 视频?
- sql - SQL max 两列
- javascript - 按数字搜索时 Ant.design 自动完成错误
- c - 如何创建一个为指针分配 10 个字节的函数,然后检查指针是否已分配,返回布尔值?
- python - 忘记“-y”时,jupyter笔记本中的conda安装停止
- android - 更新到 React 0.60.4 会破坏 Android 构建(错误找不到符号)