【发布时间】:2021-11-06 03:30:11
【问题描述】:
让我们想象一下这种情况,然后我们在微服务中分布式事务,由 SAGA approach 管理。存在调用服务 A、服务 B、服务 C 的 Out 事务。
失败的场景:
- 服务A成功完成任务并发送消息给B 服务
- 服务B成功完成任务并发送消息给C 服务
- 服务 C 失败并向服务 B 发送消息以撤消 交易。
- 服务 B 尝试撤消事务但失败。
因此,我们的数据不一致,这是不可接受的。 问题是,SAGA模式下事务回滚失败的情况如何处理?
【问题讨论】:
-
需要重试直到成功。
-
如果不一致是不可接受的,包括在等待saga回滚重试期间,您可以通过杀死服务A和B来消除不一致,直到可以纠正不一致(Consistency over Availability )。
标签: microservices saga