一、背景
用单下单的时候需要先锁库存,然后再生成订单,库存所在的库和订单是两个库,这里就涉及到了分布式事务的处理,下面说下两种解决方案吧
二、方案
1、定时任务+本地消息表

这种方案还有一个优化点就是:
可以去掉消息的定时任务,然后就是在生成订单的事务中如果失败,那么就再开启一个事务(事务中会强制走主库查询)查询下该订单是否存在,如果存在就正常进行流程,如果不存在那么就直接设置消息的状态是释放未售出,然后进行库存的回滚
2、消息队列+本地消息表
这种就不自己画图了,盗用一下其他作者的图吧,附上链接

三、总结
方案不是怎么复杂,主要是出问题的时候定位需要做好相应的方案处理吧
本文探讨了在跨库操作中处理分布式事务的两种方法:使用定时任务与本地消息表结合,以及利用消息队列配合本地消息表。通过这两种方案,可以有效解决下单时库存锁定与订单生成之间的事务一致性问题。
2720

被折叠的 条评论
为什么被折叠?



