API网关和微服务通信

Posted

技术标签:

【中文标题】API网关和微服务通信【英文标题】:API gateway and microservices communication 【发布时间】:2019-10-01 06:17:09 【问题描述】:

我正在构建微服务架构,我需要沟通方面的帮助。 API网关与服务通信的最佳方法是什么?我的 API 网关将是 graphql apollo 服务器和服务将是 REST APIs. 我应该使用 REST 与服务或某些消息系统通信,如 RabbitMQ ?

【问题讨论】:

【参考方案1】:

这两种方式都可以,但是使用像 RabbitMQ 这样的消息代理系统会给你带来负载平衡的优势。使用 HTTP REST 通信,您需要一个负载均衡器,以便将流量分配并路由到各种实例。但是对于像 RabbitMQ 这样的消息代理,代理本身就是负载均衡器。如果多个消费者同时监听同一个地址,消息将被并行传递,而不是像 HTTP 的行为那样相互阻塞。我希望我能解释清楚:)

你可以看看这个article,它解释了优点。

【讨论】:

还有一个问题要问你@onuriltan。我可以使用 gRpc 在网关和服务之间进行通信,例如身份验证服务和网关,并使用消息代理在服务之间进行通信吗?还是我应该一直使用消息代理? @Lule 是的,你也可以使用 gRPC,它也更快,但我发现它更难使用,因为你需要实现广播、发布订阅、不同点之间的安全等。 RabbitMQ I find 更容易配置和实现。 谢谢,非常有帮助。那就用 RabbitMQ 吧。

以上是关于API网关和微服务通信的主要内容,如果未能解决你的问题,请参考以下文章

API网关和微服务认证

具有 API 网关和微服务的 Blazor 服务器指南

用于事件驱动架构的 API 网关

支持 MQTT 的 API 网关 (IOT)

Ocelot实现API网关服务

如何做好 ​API 网关的服务安全设计?