分布式事务的问题-章节实现有错误理解

来源:9-12 分布式事务02-编码实现

JAVA4GL

2021-04-08

9-12章节 讲述的是A-B 只有两个服务 这好像经不起正常分布式事务的考验
应该是A-B-C 如果C失败了 怎么去回滚 A和B
章节里面讲的 发送半消息 然后执行本地事务 那么 如果A本地事务成功了 就提交事务了
然后消息到B了 B也成功了 结果到C 就失败了 但是业务是需要 A-B-C都成功 但是你这没有本地事务挂起
本地成功就提交事务了 那么 如果C失败了 怎么回滚A和B 已经提交的事务呢
所以 我觉得 只有两个服务的事务控制 根本就不算分布式事务 根本经不起正常的考验
只关心本地 不考虑回滚

TCP模式 说不上 2PC模式 完全不同

写回答

1回答

大目

2021-04-16

您好,这个分布式事务方案叫做基于可靠消息的分布式事务。这个方案就是假定消费者有能力成功消费消息并处理的。在您的用例中,如果C失败了,RocketMQ自动会进行重试,直到成功。

如果C就是无法消费,那说明C有问题,想办法修复C的问题。

以此类推,如果还有D,也是类似的,总之都要假定消费者有能力消费掉这条消息哈。

-----

至于2PC,不是我的说法,是作者的说法,详见:https://github.com/apache/rocketmq/pull/358

//img.mukewang.com/szimg/6079010a09f6387c18620220.jpg

0
0

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3091 学习 · 1324 问题

查看课程