【问题标题】:Best Practice : Roundtrip calls in Restful Event driven Microservice Architecture最佳实践:Restful 事件驱动微服务架构中的往返调用
【发布时间】:2021-05-20 21:29:50
【问题描述】:

我正在使用带有 Rest Endpoints 的事件驱动微服务架构。

我正在寻找有关微服务往返调用的建议。

例如,在我的应用中,我有服务“A”和“B”。

服务 B 调用 A 的 post 方法,“A”再次调用“B”上的 get 方法来获取一些数据以准备最终结果。我正在使用这种方法来打破循环依赖。

到目前为止,我读过的几乎所有文章都在谈论“减少”往返而不一定“消除”它们。

微服务最佳实践对此类往返有何看法?

【问题讨论】:

    标签: rest microservices


    【解决方案1】:

    首先,事件驱动的微服务通过生成和使用来自事件代理的事件来精确地避免这种同步直接通信。

    不管怎样,使用事件异步通信还是直接通信都无所谓,服务之间的通信越少性能越好。因此,在您的情况下,您可以做的最好的事情是传递服务 B 需要从服务 A 获得的所有信息,这样服务 B 就不需要进行另一个调用。

    使用事件驱动的方法,服务 A 将生成一个包含服务 B 所需的所有信息的事件,并将其发送到服务 B 将要监听的主题。

    【讨论】:

      【解决方案2】:

      根据您的架构质量目标,有三种可能的往返解决方案:

      • 进行调用并增加客户端请求的延迟。
      • 预先复制数据以更快地响应客户端。例如,您可以使用异步发布-订阅机制。
      • 将这两种服务合并为一个更大的服务。

      最佳实践(尚未验证,但受 SCS 启发):尝试使用复制数据在服务之间进行 0 跳以响应客户端请求。

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 2020-04-07
        • 2019-06-18
        • 1970-01-01
        • 2016-05-24
        • 2021-02-03
        • 2021-04-17
        • 2017-09-03
        相关资源
        最近更新 更多