我有 2 个微服务 S1
和 S2
. S1
调用 S2
更新数据然后 S1
插入另一条数据,但让我们考虑 S1
失败,那么我们需要回滚S2
更新的数据否则我们将处于不一致的状态。
我也经历过 Saga 模式。它会满足这种不一致吗
任何人都可以为此提出更好的解决方案吗?
最佳答案
分布式事务在大多数情况下都是有问题的,它们对服务不利
交易需要持有锁并代表他们持有
对外服务打开了一个安全漏洞(使它更容易
做拒绝服务攻击)你不能假设之间的原子性
两个不同的实体或资源。特别是当这些资源属于
到不同的业务。
但要困难得多
Sagas(顺便说一下,它不需要编排)作为一种协调解决方案出现,因为它们使服务更加灵活——而且实际上更接近现实生活的工作方式。您可以与 Sagas 结合以帮助延迟效果的另一种模式可以是 reservation .
您的另一个选择可能是重新考虑如何对服务进行分区。可能是您现在拥有的服务边界不正确,重新设计会将所需的事务包含到一个服务中
关于microservices - 微服务中的分布式事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51520654/