Open houdq opened 11 months ago
UUID 生成:
基于时间戳&时钟序列生成 基于名字空间/名字的散列值 (MD5/SHA1) 生成 基于随机数生成
弊端
基于数据库生成
sequence弊端
总结:强依赖数据库
snowflake 雪花算法
自增ID
多台机器不同初始值、同步长自增 批量缓存自增ID
弊端
不适合多表 不适合分布式系统,可能会重复 数据迁移带来问题,主键规则需要重新搞
总结:全局 id 需要做到以下几点
唯一性:生成的ID全局唯一,在特定范围内冲突概率极小 有序性:生成的ID按某种规则有序,便于数据库插入及排序 可用性:可保证高并发下的可用性 自主性:分布式环境下不依赖中心认证即可自行生成ID 安全性:不暴露系统和业务的信息