我的问题是:
- 服务 A 开始交易;
- 服务 A 准备并将任何数据保存到 DB
- 服务 A 对服务 B 发出一些(HTTP-REST)请求
- 如果服务 B 成功响应(并保存数据),则 A 提交事务
- 如果服务 B 抛出任何异常 - 服务 A 回滚事务
问题是服务 B 只是响应缓慢,服务 A 捕获了超时异常并回滚了事务。然而,服务 B 处理了数据(尽管它没有及时响应)。何时,如果服务 A 和服务 B 都保存并处理了数据,则认为该过程成功。在这种情况下,由于事务的回滚,服务A的数据没有被保存。
这个问题有一个通用的解决方案吗?我期待 2PC 和基于事件的分布式事务机制(例如 saga 模式)。感谢任何帮助/链接/等。