之前的一篇文章回顾了「走取购」创建订单时库存的扣减时机。今天再来看看项目对于库存超卖的解决办法。
什么是库存“超卖”?其实简单来讲就是多卖了,库存的数量变成了小于0。为什么会出现这种情况,因为明明在扣减库存的时候会去检查剩余数量,然后再进行减法运算。
是的,明面上看这是没什么问题,似乎挺合理的,看下伪代码:
1 |
|
上面这段简单的代码,如果是放在单线程里面执行,或者不是在高并发的场景下,一般不会发生库存超卖的情况,否则的话,是有大概率使其库存为负数的。
之前的一篇文章回顾了「走取购」创建订单时库存的扣减时机。今天再来看看项目对于库存超卖的解决办法。
什么是库存“超卖”?其实简单来讲就是多卖了,库存的数量变成了小于0。为什么会出现这种情况,因为明明在扣减库存的时候会去检查剩余数量,然后再进行减法运算。
是的,明面上看这是没什么问题,似乎挺合理的,看下伪代码:
1 |
|
上面这段简单的代码,如果是放在单线程里面执行,或者不是在高并发的场景下,一般不会发生库存超卖的情况,否则的话,是有大概率使其库存为负数的。