1、分布式环境下,保证每个序列号(sequence)是全系统唯一的;
2、序列号可排序,满足单调递增的规律;
3、特定场景下,能生成无规则(或者看不出规则)的序列号;
4、生成的序列号尽量短;
5、序列号可进行二次混淆,提供可扩展的interface,业务方自定义实现。
方案 | 介绍 |
---|---|
单机数据库 | 主键ID用bigint类型,并且设置为自增、无符号 优点:(1)能够保证唯一性; (2)能够保证递增性; (3)步长固定; 缺点:不支持数据库分不分表,性能低 |
UUID | UUID是在本地生成的,所以相对性能较高、时延低、扩展性高,完全不受分库分表的影响! 缺点:无法保证趋势递增;用32位字符串表示,占用数据库空间较大;建立索引查询效率低;可能会出现UUID重复的情况 |
ID分组 | 1个数据库变成4个库,每个数据库设置不同的auto_increment初始值init,以及相同的增长步长step,以保证每个 |