分布式ID
背景
分库分表中,ID容易重复。
解决办法
- UUID
- 统一ID序列表
- 雪花算法
UUID
通用唯一识别码 Universally Unique Identifier
实际应用中使用少,缺点是单纯ID、没有实际意义、32位。
是可以解决ID重复的问题。
MyCat不支持UUID方式。Sharding-Jdbc支持。
统一ID序列表
从一个统一的序列生成器中获取
可以数据库配置、本地文件读取。
雪花算法
- Twitter提出的
- 一个64位的long型数字
- 第一位是0 固定的 正数
- 41位 时间戳 当前时间减去设置的时间的毫秒数 能用69年
- 5位 机房ID
- 5位 机器ID
- (所以做多1024个机器,多了并发有问题。)
- 12位 序列号
- (毫秒级时间戳并发是4096个)
问题
- 时间回调 ID会重复。