分布式全局唯一ID解决方案

分布式事务全局唯一ID方案

分布式事务全局唯一ID方案

UUID

JAVA自带UUID的算法
优点:本地生成(快)、基本能保证不重复、信息安全
缺点:无序,不适合做索引会导致mysql B+树重排,插入效率极低

mysql自增

单机mysql自增可以实现
分布式需要使用 insert + replace into 设置不同的步长
优点:有序,能够实现递增
缺点:性能有问题,不能满足高并发

redis集群 incr incrby

例: 5台redis,初始值 1,2,3,4,5 步长为5,可取到全局唯一id
优点:有序,满足高并发需求
缺点:部署成本高

雪花算法

是推特的分布式自增id算法
QPS:每秒大概能够产生24万个自增id
分布式全局唯一ID解决方案_第1张图片

第一位符号位永远为0
紧接着41位表示时间戳,可表示70年左右,从1970年开始 2039年9月7号
紧接着10位工作进程位,可表示约1024台,包含wokerid、datacenterid
紧接着12位表示每毫秒的每台机器的不碰撞序列,可表示4096位

存在时钟回拨的问题

你可能感兴趣的:(java高级,redis,数据库,java)