分布式ID
2026/7/2大约 1 分钟
UUID(v1/v4)
- 理论唯一 != 实际不撞
::: warn
v4版本:UUID在高并发下是会生成重复订单的
v1版本:使用到了MAC地址去生成ID,有风险
:::
- UUID性能低
- 字符串,生成速度慢,做索引也慢
- 生成的id不是原生有序
ID自增
雪花算法
核心原理
41位时间戳,支持69年
10位机器号
12位序列号,支持每毫秒4096个
- 时钟回拨问题
- 记录最后生成id的时间戳
- 等待时间追上再生成ID
- 若等待时间超过一定阈值,直接报错
- 机器ID分配问题
- 使用ZooKeeper自动分配
美团Leaf
号段模式
一次从数据库拿一段ID存到内存,业务生成ID时直接从内存取,用完后再去数据库拿下一段(1001,2000)
雪花算法(可靠优先)
- 将机器ID由Zookeeper自动分配
- 解决时钟回拨,短回拨(5ms)等待,长回拨直接报错
UUID-v7
- 前48位:时间戳
- 后80位: 随机数
- 格式: 兼容UUID v4
缺点仍然,
- 性能不好
- 字符串存储
- 目前库支持不到位
Redis自增ID
- Redis集群保障高可用
- 需要AOF和RDB持久化
- 需要做一些性能优化:比如号段