库存检测和支付问题
来源:10-4 下单与支付的业务流程(库存量检测)
周康武
2019-07-19
场景一
- 老板有西瓜买吗
- 老板看了一眼, “有”(第一次检测库存)
- 给我来一个西瓜 (下单)
- 你刚才问的时候还有, 我再看看(第二次检测库存), 好的,还有西瓜, 5块钱
- 5块是吧, 给你(支付)
- 收您5块, 我拿西瓜给你, 这么多人买西瓜,刚才那个西瓜没被我老婆卖给其他人吧(第三次检测库存)
- 你的西瓜(交易成功, 库存减一)
场景二
- 老板有西瓜买吗
- 老板看了一眼, “有”(第一次检测库存)
- 给我来一个西瓜 (下单)
- 你刚才问的时候还有, 我再看看(第二次检测库存)
- 还有西瓜, 拿出西瓜(库存减一),5块钱
-
- 5块钱是吧, 给你(支付)
- 收你5块(支付成功), 交付西瓜(交易成功)
-
- 忘记带钱了, 不好意思老板,下次在买吧(支付失败)
- 老板把西瓜放回车上(库存加一)
老师的支付流程是场景一, 场景一在高并发的时候 , 还是会出现支付成功但是库存为零的情况(第三次检测库存) , 这是可能需要退款给用户 。
如果使用场景二, 好像更贴合生活, 可以避免场景一的问题。
我想问问七月老师 场景二的方案是会不会更好一些, 实现起来成本高吗?
写回答
3回答
-
萧俊介
2020-07-31
场景二的方案会更好一些,实现起来相对方案一成本会高不少。主要是方案二对用户更友好,不会出现下单成功,但支付的时候却告知没商品的问题(用户感觉被当猴耍)。
但是方案二也不能完全解决并发的问题,因为并发是这样的情况:
A:老板有西瓜买吗
老板:看了一眼, “有”
B:老板有西瓜买吗
老板:看了一眼, “有”
A:给我来一个西瓜 (下单)
还有西瓜, 拿出西瓜(还没来得及记录库存减一)
B:给我来一个西瓜 (下单)
还有西瓜(因为还没来得及记录库存减一), 拿出西瓜
后面就不用说出什么问题了吧~
10 -
慕斯6434603
2021-02-13
正常逻辑应该,下单成功就减库存,订单有效期15分钟或30分钟,订单过期库存返还,在过期时间内支付成功,库存不变。这需要执行一个延迟任务
00 -
7七月
2019-07-20
没什么意义。确实在高并发的时候会出现库存为0,但可能性很低很低了。第二种解决不了这个问题,你库存-1的时候不会出现并发问题?
00
相似问题