数据分库分表后,单库自增主键不再全局唯一。分布式 ID 要在一组机器上,生成全局唯一、尽量趋势递增、高性能、高可用的编号。
1. 到底需要什么样的 ID
先明确需求,再谈方案。一个「合格」的分布式 ID 通常要满足:
| 要求 | 说明 | 是否必需 |
|---|---|---|
| 全局唯一 | 跨库、跨表、跨服务都不重复 | 必需 |
| 趋势递增 | 新 ID 大体大于旧 ID,利于 B+ 树索引插入,避免页分裂 | 重要 |
| 高性能 | 单机每秒生成成千上万个,不成为瓶颈 | 重要 |
| 高可用 | 发号服务不能是单点 | 重要 |
| 信息安全 | 不可被轻易猜测、推断业务量 | 视场景 |
| 语义信息 | 含时间、机器等,便于排查 | 加分项 |
2026/10/11大约 6 分钟