唯一 && 趋势有序
数据库auto_increment,多个写库时,每个写库不同的初始值和相同的步长(A(0,2)B(1,2))
缺点:非绝对递增,写库压力大
DB只保存序列最大值,由ID生成器批量派发,防止单点,增加一个影子服务,vip + keepalive
缺点:可能出现空洞不连续,无法水平扩展
本地生成UUID
缺点:时序性无法保证,过长,作为主键效率太低
毫秒数
缺点:高并发会出现重复
snowflake
一个long型的ID,使用其中41bit作为毫秒数,10bit作为机器编号,12bit作为毫秒内序列号
毫秒数 + 业务线 + 机房 + 机器 + 毫秒内序列号 + 预留位