分布式全局id
UUID
- UUID通用唯一识别码(Universally Unique Identifier)
- 使用UUID保证每条记录的id都是不同的
- 缺点:只是单纯的一个id,没有实际意义.长度32位,太长
- mycat不支持UUID的方式,sharding-jdbc支持
统一id序列
- ID的值统一的从一个集中的ID序列生成器中获取
- ID序列生成器mycat支持,sharding-jdbc不支持
- mycat中有两种方式:本地文件方式和数据库方式
- 本地文件方式用于测试,数据库方式用于生产
- 优点:ID集中管理,避免重复
- 缺点:并发量大时,ID生成器压力较大
雪花算法生成全局主键
- SnowFlake是Twitter提出的分布式ID算法
- 一个64bit的long型的数字(0+41位时间戳+5位机房+5位机器+12位序号)
- 引入时间戳,保持自增
- 基本保持全局唯一,毫秒内并发最大4096个ID
- 时间回调可能引起ID重复
- mycat和sharding-jdbc均支持雪花算法
- sharding-jdbc可设置最大容忍回调时间