【问题标题】:orchestration of spring rest webservicesspring rest webservices的编排
【发布时间】:2021-03-06 22:45:57
【问题描述】:

如果我们有四个 spring REST Web 服务,假设 A B C D 每个都有自己的数据库。

如何使用基于编排的 SAGA 模式实现分布式事务?

我可以使用 Spring kafka + rest 端点吗?

【问题讨论】:

    标签: microservices spring-kafka saga


    【解决方案1】:

    您可以使用 SAGA 做到这一点,但我会推荐 Spiderwiz (spiderwiz.org)。它应用了类似的事件驱动范例,但它的使用更直接,并且消除了服务发现、发布-订阅和其他开销的整个麻烦。

    【讨论】:

      【解决方案2】:

      您可以使用 SAGA 数据库模式。但它更适合复杂的工作流程。让我解释 , 首先交易是什么意思? 这意味着单个逻辑工作单元并分布在分布式系统中的多个服务中。简单地说,当微服务世界首先你需要维护ACID(原子,一致,隔离和持久)属性。为此,您需要跨服务管理策略

      我们可以使用编排和编排方式来实现 SAGA 模式。如果您的系统有非常复杂的工作流程,那么最适合的模型是编排。

      回答您的问题:如果您首先使用编排方法,我们需要 Message Broker 实现。所有的事务都在 Message Broker 中发生。

      在消息代理内部,您需要维护两个主队列。一个用于通过操作 Q,另一个用于失败操作 Q。 当 A 完成自己的操作时,然后将消息发布到消息代理和服务 B 始终侦听该消息代理和消息。同样,所有服务都侦听并将自己的事务状态消息发送给代理。 如果任何服务自身操作失败,则消息发布到失败 Q。

      这就是你需要实现的场景。

      此实施取决于您的系统规模。而且这种方法有很大的缺点:

      • 循环依赖风险(每个服务流都依赖于其他流)

      优点:编排适合简单的工作流程,服务很少。 没有单点故障。

      希望对编排 SAGA 模式有所了解。

      谢谢-dns-

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        相关资源
        最近更新 更多