订单号生成

高并发下怎么生成唯一订单号
方案一:
  如果没有并发的话,订单号只在一个线程中产生,不同订单的时间戳不同,   
  时间戳+随机数(自增数)区分订单
   如果有并发的话,并且订单号在同一台主机产生多个进程,只要把进程的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

猜你喜欢

转载自572327713.iteye.com/blog/2381247