分布式事务的问题-章节实现有错误理解
来源: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
00
相似问题