特点
全局唯一
方案
UUID
数据库主键自增
缺点:①并发性能不高,受限于数据库性能。②若分库分表提升性能需改造,较复杂。③自增,数据量泄露。
Redis自增
雪花算法
号段模式
1-100,101-200,201-300……每次获取的号段都可以生成一定数量的ID。直至号段内的ID用尽,再次重新获取新的号段来生成ID。
雪花算法
上图以二进制展示
1bit符号位:二进制取0或1,1表示负数,分布式ID都用正数,所以符号位舍弃。
41bit时间戳位:二进制时间戳(毫秒)。换算:时间可以存69年的时间
10bit工作进程位:机器序号(5位+5位)。5位表示服务器区域(如北京、上海),5位表示服务器标识。换算:1024台服务器
12bit序列号为:自增数。换算:在同一毫秒下,同时可以生成4096个ID。
技术选型
锁定两款:滴滴的tinyid和美团的leaf