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

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

一、要求:

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 业务系统 ※※※※※

 

posted @ 2017-06-27 22:52  走路到纽约  阅读(7678)  评论(0编辑  收藏  举报