如何在微服务架构中处理报告

问题描述 投票:0回答:1

我目前正在微服务架构中工作,其中所有服务都通过消息总线进行通信。在此设置中,只有一项服务(应用程序服务)通过 REST 调用直接与客户端交互。 然而,我们在报告生成方面遇到了挑战。当客户端请求报告时,App服务通过消息总线向报告服务发送消息,并等待报告生成。由于此过程是事件驱动的,可能需要几秒钟甚至几分钟,因此我们正在探索处理客户端的最佳方法。 我正在考虑的一种解决方案是建立从客户端到报告服务的直接 HTTP 调用。然而,我知道这可能被视为有点违背微服务模式。 对于如何有效处理这种情况的任何建议或见解,我将不胜感激。

这是架构

architecture microservices
1个回答
0
投票

我认为您的应用程序服务具有用于处理客户端请求的API网关的作用,而您的实际系统使用消息总线进行内部通信。因此,您在外部使用同步通信,但在内部使用异步通信。我假设从应用服务返回客户端的 HTTP 调用实际上是同步 REST 响应,并且延迟是由异步消息总线产生的。

所以我对此的想法:

是否需要使用应用服务作为网关?如果有其他客户端使用应用服务进行不同类型的调用,则可能会出现这种情况。 使用直接的客户端到微服务通信(正如您在问题中提到的)通常并不反对微服务架构,而是在客户端和微服务之间创建更强的耦合 - 另请参阅本文以获取更详细的分析。

另一方面,还有其他使用消息总线的内部服务吗?您内部选择异步方法的原因是什么?如果您可以将其更改为应用程序服务与其他内部服务(包括报告服务)之间的同步通信(即 REST),您也可以避免该问题。

© www.soinside.com 2019 - 2024. All rights reserved.