【问题标题】:Calling Micro service inside a micro service在微服务中调用微服务
【发布时间】:2018-02-20 15:07:06
【问题描述】:

微软 - 微服务架构

从单个微服务调用多个微服务是否可靠?

如果我用自己的数据库(即客户数据库和订单数据库)开发了两种不同的客户和订单微服务,并且如果我想获得客户和订单的组合数据,那么最好的选择是什么那个?

我们只想调用一个微服务,该微服务将调用客户和订单的 2 个单独的微服务,并结合它们的数据并返回我们选择的响应。这种用法是真的吗?

另一种方式,我们将从应用程序端调用 2 个单独的微服务并在那里组合数据。

我希望获得性能最佳、可靠且标准方法的选项来执行此过程。

谁能告诉我有什么选择?

还有一点,双方的性能会更好,比如微服务响应和应用程序端,

如果有其他选项,请同时说明。

【问题讨论】:

    标签: azure microservices


    【解决方案1】:

    这取决于resilient 您希望您的系统如何,但归结为两种类型的通信:同步或异步。

    对于弹性较小但架构更简单,您可以使用同步通信。在这个架构中,当一个微服务失败时,所有依赖的微服务也会失败。您应该使用Circuit breakerBulkheads 模式。

    为了获得更大的弹性但更复杂的架构,您应该使用异步通信方式。在这种风格中,微服务可以使用messages 进行通信。

    【讨论】:

      【解决方案2】:

      微服务架构有两种实现方式。

      1. API 组合 您可以在其中调用各个所有者服务来获取数据并将其保存在内存中。唯一的缺点是如果频繁更新,则会成为性能瓶颈。

      2. CQRS 这是一个更好的解决方案,其中结合数据的服务通过事件队列订阅数据所有者服务。如果发生任何更新而不是定期提取数据,则组合数据的服务会在队列中查找域/更新事件并相应地刷新数据。该事件由数据所有者服务发布。

      【讨论】:

        猜你喜欢
        • 2018-03-04
        • 2014-01-08
        • 1970-01-01
        • 2020-04-27
        • 1970-01-01
        • 2019-04-01
        • 2019-11-15
        • 2020-12-19
        • 2022-10-02
        相关资源
        最近更新 更多