Twitter 数据与 Snowflake ID
Snowflake ID 结构
64 bits = 1 bit (未使用) + 41 bits (时间戳) + 10 bits (机器 ID) + 12 bits (序列号)
序列号为每线程独立,工作机器号 (worker numbers) 在启动时通过 ZooKeeper 选择。
实现与参考
- Twitter4J
- 分布式系统中的唯一 ID 生成 (Slides)
- CalliCoder: 分布式唯一 ID (Java)
- Instagram ID 分片 (PostgreSQL)
- Rob Conery: PostgreSQL ID 生成器
速率限制参考 (Rate Limits)
| 间隔 | 请求数 |
|---|---|
| 15 分钟 | 3,000 |
| 1 小时 | 12,000 |
| 24 小时 | 288,000 |
| 1 个月 | 8,640,000 |
平均 ~3.3 req/sec