当前位置: 首页 - 编程技术 - 文章正文

高并发下的不同订单相同订单号的处理

xiaoqihv

公司的用户数突然并发数激增,紧急处理,添加了服务的带宽输出,内存等一些服务器操作,解决了使产品正常使用。

发现一天3000多单的数据里,有很多不同的订单,但是订单号却相同,查了半天,获取订单号的接口没有问题,创建订单的接口也没有问题,

问题就出现在高并发下:

1、订单号是根据获取当天最大的订单号+1,作为参数插入数据库,生成订单,

2、在获取订单号到生成订单有一定的时间差,大概也就是几毫秒的时间差,但是在高并发下,就有可能同时获取到相同的订单号,

找到问题了,解决办法:

1、订单表中给ordre_sn订单号这个字段加上唯一索引,(数据库一开始设计的并不好)

2、在产生相同订单号的时候,将order_sn+1后再次插入数据库,如果还是有相同的订单号,则不在+1重复插入(其实这个操作可以省掉,直接报系统繁忙就可以了)

还有什么好的办法解决这类问题吗?求教。

文章地址:https://wenmayi.cn/post/449.html