从多个微服务查询数据

Querying data from multiple microservices

我正在尝试设计一个使用微服务架构的应用程序。该服务将有一个 api 网关、一个用户服务,然后是每个分析源的单独服务。

例如,假设我有 Twitter 分析数据和 Instagram 分析数据。 Twitter 分析数据和 Instagram 分析数据将有一个单独的微服务。这些微服务将处理该服务的 oauth、存储数据和提取数据。我的问题是:我将如何从一项服务请求数据,比方说用户服务,然后根据来自用户服务的数据,向 instagram 服务和 twitter 服务发出请求以请求该用户的分析信息。

但是,如果我需要请求的服务数量 n 会怎样?比如说,用户需要来自 facebook、instagram、twitter 和 tiktok 的分析数据。我将如何处理向每个请求发出单独的请求,然后将其组合成对客户端的单个响应?

我正在考虑使用 api 网关,因为我读到您可以支持将请求扇出到多个微服务。我完全确定该怎么做,但是我发现 this 来自 aws 的文章概述了不同的策略。

我也阅读了 this 问题 "You should implement endpoints in the services to facilitate these two requests. If you're making n requests, you've done it wrong". 所以现在我什至不确定我是否在正确的轨道上。

我的处理方式是否正确?

我认为解决上述问题的方法是使用 CQRS 设计模式。

这个想法将是一个单一的服务,它监听 Twitter 分析和 Instagram 分析中的事件并将这些详细信息保存在数据库中。存储数据后,我们可以点击此服务来获取所需的数据。

最终我们将引入一个中介服务,它将监听那些分析服务中的事件并将它们保存到数据库中。现在我们可以通过对该特定服务进行一次 api 调用来避免多次 api 调用,这将为您提供所需的详细信息。

我想这可能会有一些帮助!!

参考文献:https://microservices.io/patterns/data/cqrs.html#:~:text=How%20to%20implement%20a%20query%20that%20retrieves%20data,published%20by%20the%20service%20that%20own%20the%20datahttps://medium.com/design-microservices-architecture-with-patterns/cqrs-design-pattern-in-microservices-architectures-5d41e359768c