Id生成的几种方式
- 数据库自增
- 优势
- 简单,无需额外操作
- 保持定长自增
- 保持单表唯一性
- 劣势
- 主键生成依赖数据库,高并发下会造成数据库服务器压力较大
- 水平扩展困难,在分布式数据库环境下,无法保证唯一性
- 优势
UUID(GUID)
- 优势
- 本地生成,无需远程调用(无需网络通信)
- 全局唯一
- 水平扩展好
- 劣势
- ID 128 bits,占用空间大
- 字符串类型,索引效率低
- 无法保证趋势递增
- 优势
时间戳
略
Twitter Snowflake 雪花算法
- 优势
- 本地生产,无需远程调用(无需网络通信)
- 单机每秒可生成400w个ID
- ID 64 bits,占用空间小
- long类型,对索引效率有提升
- 趋势递增
- 劣势
- 时间回拨问题
- 集群部署时,集群内机器时间同步问题
- 优势
基于雪花算法的分布式Id生成器实现
1 | import java.util.Calendar; |