电商交易系统高并发分布式订单号生成策略

商交易系统高并发分布式订单号生成策略redis

1、要求:算法

1.全局惟一性,不能重复数据库

2.信息安全加密防止用户根据id规则获取数据安全

3.数据递增,保证下一个id必定大于上一个id网络

 

二,策略并发

1.UUID  惟一识别码,16个字节 (128位)分布式

  组成部分:当前日期+时间+时钟的序列+mac地址 高并发

  uuid 有几个实现版本,好比jdk 自带的uuid性能

优势:生成简单,不占用宽带,本地生成,数据迁移不影响。优化

缺点:字母存储,无序,没法保证趋势递增,查询慢,不可读

 

2.snowflake(雪花twitter开源 分布式id算法)

41字节毫秒+10字节的机器id+10版本号,国内有不少平台有将其实现和优化

优势:本地生成,不占宽带,毫秒在高位,低位是趋势递增。

缺点:依赖时钟 若是时间回拨可能会重复,效率比uuid慢

 

3. 数据库

 

优势:代码实现简单,性能ok,数字排序,可读性强

缺点:受限于数据库,单点故障,扩容麻烦,须要插入后才能获取id增长查询数据库主从延迟master才能查到

 

4.redis 集群

格式:12位=年2位+当年第几天3+小时2+自增5

优势:不依赖数据库,灵活,没有单点故障,性能优于数据库

缺点:网络资源,须要增长额外服务插件

 

 

总结:

uuid Token  ,图片id等 ※※
snowflake Elk,mq,业务系统 ※※※※
数据库 并发不大,业务增加不快 ※※※
redis 业务系统 ※※※※※
相关文章
相关标签/搜索