脑补了一个微服务场景, 请问解决方案是什么?

查看 543|回复 45
JYii   
好像没问题啊。下订单,库存-1 ,生成交易单。交易失败(立即或一段时间后自动失败),库存+1 。
bthulu   
支付失败是不补库存的, 要客户取消订单才补库存.
li746224   
实际场景中前台销售库存 不等于 仓库库存,即使真出现销售库存变多了,问题也不大的
realpg   
关系数据库就事务行锁锁住就完了
非关系数据库,就自己实现个事务锁机制
b1t   
支付失败有必要扣库存么
hyqCrystal   
根据业务场景 要发生加一的场景一定是支付失败后库存+1 ,此时前面业务一定发生了商品减库存这个业务。那么业务上再做+1 的时候可以强制校验前面业务是否成功。可以使用操作时间,也可以使用最终一致性的消息表来都行。
summerLast   
增加一个锁定状态,出库在扣减库存
justfindu   
消息队列?
realpg   
抱歉我傻逼了 没注意你说微服务隐含的意思
这就类似金融场景要求强一致的,不 confirm 你就敢回馈给用户结果?
就好像,银行转账,UI 系统把 operation 发给后台,不等执行结果就告诉用户你转账成功钱没了?
正确的方法,第一个生成订单扣库存,你发 message 到 mq ,这时候并不能给用户订单生成,要等待这个确实后端处理完了库存扣减完毕,这个反馈操作成功了,才能真生成订单。
而你没生成订单,就没有能取消订单,恢复库存的操作。
tabris17   
@realpg 难怪我根本看不懂楼主在说啥。搞了半天他的意思是发了一条异步消息就直接生成订单了,也不管消息有没有被处理成功
您需要登录后才可以回帖 登录 | 立即注册

返回顶部