高并发,分布式电商订单号生成

在高并发和分布式场景下,电商订单号生成需考虑全局唯一性、信息安全性、趋势递增和效率。文章介绍了四种策略:UUID/GUID(易重复)、数据库自增ID(有单点故障)、Twitter SnowFlake(依赖时间戳)和Redis自增(需集群维护)。每种策略都有其优缺点,需根据实际需求权衡选择。
摘要由CSDN通过智能技术生成

在分布式与高并发的情况下,生成订单号应满足以下几点:

  • 全局唯一

  • 订单号信息安全要求(不可推测性)

  • 趋势递增要求

  • 效率(生成、使用、索引)

  • 控制并发(时间)

策略一:UUID和GUID(通用唯一识别码)

组成:当前日期+时间+时钟序列+机器识别码(Mac地址或其他),正常情况下十几年之内可以达到全球唯一性。

优点:简单

UUID.randomUUID()

缺点:

1. 用户不友好,无序,不可读

2. 索引关联效率较低,查询慢

3. 分布式集群情况下有几率重复

 

策略二:数据库自增ID

在数据库集群环境下,不同的数据库节点可以设置不同的起步值、相同的步长值来实现订单号唯一

tab_A   起步值1   步长值10

1
11
21
31
41

tab_B   起步值2   步长值10

2
12
22
32
42

优点:

1. 无需编码

2. 递增

缺点:

1. DB单点故障

2. 高并发下插入数据需

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值