现代应用分布式 ID 生成两种变种:
- TwitterSnowflake 以及其变种, 优势是数字可用 Int64 存储, 主要缺点是时钟回拨敏感。
- UUID 及其变种, 因为不追求数字存储, 位数更长, 使得低位段设计更好, 一般可以不用担心时钟回拨问题.
Snowflake 系
- Twitter Snowflake: 原版, 精度 ms, 导致时钟回拨容忍度毫秒级.
- Baidu UidGenerator: 高吞吐, 精度 s, 可借用未来时间提升吞吐, 时钟回拨容忍度秒级.
- Meituan Leaf: 高吞吐, 有中心化模式, 时钟回拨容忍度高.
- Snowflake 模式: 相对原版增加时钟回拨检测, 切换到备用 WorkerID 规避.
- Segment 模式: 中心化稳定方案, 无时钟回拨问题, 吞吐量小.
- Sonyflake: 稳定, 可用年限 174 年, 精度 10ms, 增加回拨检测解决时间回拨但是降低了性能.
变种 | 精度 | 可用年限 | 吞吐 | 时钟回拨容忍 | 特性 |
---|---|---|---|---|---|
Twitter Snowflake | ms | 69年 | 高 | 毫秒级 | 原版 |
Baidu UidGenerator | s | 8.7年 | 高 | 秒级 | 可借未来时间提升吞吐 |
Leaf Snowflake | ms | 69年 | 高 | 高 | 回拨检测, 切换备用ID |
Leaf Segment | ms | - | 中 | - | 中心化方案 |
Sonyflake | 10ms | 174年 | 中 | 高 | 回拨检测, 可用年限高 |
UUID 系
- UUIDV4: 原版, 随机性 128 位字符串.
- KSUID: 160 位, 相当于在 UUID 基础上, 高位再加时间戳, 兼具排序和随机性.
- ULID: 128 位, 可兼容 UUID 格式, 高位标识时间.
评论(0)
暂无评论