3

我想了解 Saga Pattern 使用编排是如何工作的。

在我发现的所有参考资料中,似乎每个步骤都需要使用异步通信进行通信,例如队列或事件流集线器。

我在想是否真的有必要在每个步骤之间使用异步通信,或者我可以使用 Http 同步来保证每个步骤都是幂等的?

例如

我收到一个存储在队列或事件流中心(如 Kafka)中的 http 请求。然后是单个消费者,消费消息并执行一系列同步幂等步骤,就像 SAGA 编排机制一样。如果其中一个步骤失败,消息最终将被重新处理,所以我可以补偿一个步骤,如果它失败了。

4

1 回答 1

0

当然,saga 模式不需要异步通信。对于数据一致性而言,正如您声明的那样,步骤是幂等的(或者框架恰好隐藏了这一点,但事实确实如此)。

如果您想研究主要与 HTTP 同步调用一起使用的同步传奇模式实现之一,您可以在此处阅读有关 LRA(长期运行操作)的 MicroProfile 规范:https ://github.com/eclipse/microprofile-lra/ blob/master/spec/src/main/asciidoc/microprofile-lra-spec.adoc

或/和有关 Narayana 项目规范实施的博文:https://jbossts.blogspot.com/2017/12/narayana-lra-implementation-of-saga.htmlhttps://jbossts.blogspot.com/2021 /07/how-to-use-long-running-actions-between.html

于 2021-08-09T10:57:12.007 回答