订单号生成

高并发下怎么生成唯一订单号
方案一:
  如果没有并发的话,订单号只在一个线程中产生,不同订单的时间戳不同,
  时间戳+随机数(自增数)区分订单
如果有并发的话,并且订单号在同一台主机产生多个进程,只要把进程的ID添加到序列号中就可以保证订单号唯一。
如果有并发,订单在不同主机中,把IP地址 CPU序列号 能区分的号码添加到序列号中就能保证唯一。

方案二:
时间戳+用户ID+随机数+乐观锁

方案三:
  可以用redis的原子递增,做高可用集群
redis本身就有生成序列号的功能,使用执久化的线程安全的

方案四:
   java自带的UUID

XX的订单号:XXCN201700000000
YY的订单号: YYCN201700000000
年份要根据真实年份进行相应变化,然后一旦年份更新,后面8位要从00000000重新开始。

其实可以通过redis来做,不过这个需求也是奇葩,是怕人家不知道系统有多少订单?
如果是postgrel,可以用序列。
可以用redis的原子递增,做高可用集群

http://m.blog.csdn.net/shuaizai88/article/details/53566425
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值