在微服务中调用微服务

时间:2017-09-12 08:31:12

标签: azure microservices

Microsoft - 微服务架构

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

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

我们希望简单地调用一个微服务,它将调用客户和订单的2个单独的微服务并组合他们的数据并返回我们选择的响应。这种用法是真的吗?

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

我想获得一个选择最佳性能,可靠和标准的方法来完成这个过程。

有谁能告诉我什么是选择?

并且在微观服务响应和应用程序方面,性能在两方面都会更好,

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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