分布式事务-本地消息表实现方案

时间:2024-04-07 17:59:51

一、背景

用单下单的时候需要先锁库存,然后再生成订单,库存所在的库和订单是两个库,这里就涉及到了分布式事务的处理,下面说下两种解决方案吧

二、方案

1、定时任务+本地消息表

分布式事务-本地消息表实现方案

这种方案还有一个优化点就是:

可以去掉消息的定时任务,然后就是在生成订单的事务中如果失败,那么就再开启一个事务(事务中会强制走主库查询)查询下该订单是否存在,如果存在就正常进行流程,如果不存在那么就直接设置消息的状态是释放未售出,然后进行库存的回滚

2、消息队列+本地消息表

这种就不自己画图了,盗用一下其他作者的图吧,附上链接

图片转载于此

分布式事务-本地消息表实现方案

三、总结

方案不是怎么复杂,主要是出问题的时候定位需要做好相应的方案处理吧