微服务与客户端之间的异步通信

Asynchronous communication between microservices and client

提问人:Jumana Jambughoda 提问时间:8/8/2023 更新时间:8/8/2023 访问量:145

问:

我们有一个基于微服务架构的应用程序,其中包含以下组件

  1. 客户端应用程序 : asp.net core mvc
  2. Api网关 : 豹猫
  3. 服务 A:asp.net 核心 Web API

客户端通过 API 网关使用 Restapi 向服务发送请求。 然后服务 A 执行一些业务操作,并异步生成数据

现在,我们希望将生成的数据异步发送到客户端应用程序,并实时更新 UI。 我们尝试了一种解决方案,即通过消息代理 RabbitMQ 直接连接服务 A 和客户端应用程序,而不涉及 API 网关。这是否违反了微服务架构中服务和客户端之间的抽象原则?

C# ASP.NET-Core 微服务 API 网关 MessageBroker

评论

2赞 JonasH 8/8/2023
如果您需要异步 API 和 API 网关,则 API 网关需要支持异步调用。拥有一个 API 网关,但不能始终如一地使用它,似乎是一个糟糕的主意。
0赞 Jumana Jambughoda 8/8/2023
我们可以在 Service 发布的 api 网关中订阅 rabbitMQ 事件,并将其代理到客户端应用程序吗?
0赞 MakePeaceGreatAgain 8/8/2023
没有人强迫你在微服务架构中使用 API 网关。然而,拥有和不使用它似乎确实是一件非常奇怪的事情。话虽如此,这个问题是 1.关于建筑的东西,应该去 softwareengineering.stackexchange.com,和 2.即使在那里也很固执己见。
3赞 JonasH 8/8/2023
关于微服务,我的一般建议是,如果你真的需要它,要认真考虑。它主要用于解决大型系统的问题,其中团队间依赖性是一个问题,但它会使架构错误更难修复。所以我不认为它适合做新事情的小团队。
1赞 jdweng 8/8/2023
您正在发出 HTTP 请求,它返回的是 HTTP 响应。连接在每次请求/响应后关闭。此外,服务器需要在一个区块中处理整个消息,因此异步不会提供任何优势。这就是设计增强型 WebSocket 的原因之一,它可以在每次请求/响应后保持连接打开。

答: 暂无答案