0

每个微服务都会向下一个微服务发送一个事件,以便以基于编排的 saga 模式运行它们的本地事务。那么,哪个微服务结束事务?最后一个没有下一个结束和批准事务的微服务或最后一个微服务向第一个启动微服务发送 OK 以提交整个过程?

4

1 回答 1

0

编排意味着服务了解它们的对应物并根据其他服务的结果来决定。没有与某些“中央协调员”沟通。

如果我们说 A 与 B 通信,B 与 C 通信(A -> B -> C),那么 A 做了一些动作,要求 B 的结果,B 做了一些动作并要求 C 的结果,C 做了一些动作。结果以相反的方式进行(A <- B <- C)。

让我们期待所有服务操作都成功。因此 C 保存数据并响应 B 任务已成功完成且结果正常。B 知道它没有等待其他服务,并且可以在 B 处验证 saga 步骤成功。然后它响应成功的 A 并且 A 知道没有其他服务要等待,并且可能以成功结束其 saga 步骤出色地。两个服务通过队列通信的示例可以在https://microservices.io/patterns/data/saga.html找到

于 2021-08-09T11:20:44.483 回答