【java】分布式事务:消息最终一致性方案,消费方出现异常,是否只能进行补偿?

【java】分布式事务:消息最终一致性方案,消费方出现异常,是否只能进行补偿?

如上层业务系统为支付系统,下层业务系统为库存系统
如果支付完成走到库存这一块,但是遇到库存不足的情况。是否只能手动写补偿机制?

最后想问下,分布式事务" title="分布式事务">分布式事务有好的文章可以推荐下的嘛。谢谢!

回答

如果按照你图中的流程,那就需要引入分布式事务。
如果是基于XA协议(两阶段提交),这种叫做刚性事务,侵入性小,方案成熟,但是不适合高并发高性能的环境,因为会锁定全局资源。
可以考虑柔性事务,强调最终一致性。方案有最大努力送达、Saga、TCC(TCC需要业务方改造代码)。可以看下蚂蚁开源的Seeta。
相关的文章我比较喜欢的还是《未来架构:从服务化到云原生》里面9.4.2节,讲了分布式事务的基本理论,现有方案的对比等。博客看了一些但没有印象深刻的。(微信读书有无限卡的话可以免费阅读。整一大章节讲的是数据库。)
希望可以帮到你。

首先业务上肯定是下单成功才会去支付,下单时肯定要预留出这一个订单的量,如果不涉及第三方支付(只是本系统钱包),比较成熟的是两阶段提交方案

以上是 【java】分布式事务:消息最终一致性方案,消费方出现异常,是否只能进行补偿? 的全部内容, 来源链接: utcz.com/a/73841.html

回到顶部