通过 API 网关进行内部通信微服务

     2023-03-28     23

关键词:

【中文标题】通过 API 网关进行内部通信微服务【英文标题】:internal communication Microservices through API Gateway 【发布时间】:2019-05-01 22:13:39 【问题描述】:

在微服务架构中,有一种常见的模式称为 API 网关。

我知道来自 API 网关外部的所有通信都用作单个入口点。

但我也希望从微服务到微服务的内部通信是通过 API 网关进行的?我的意思是它比建立点对点连接更容易处理。

那么,在整个内部通信中也使用 API 网关有什么反对意见?

【问题讨论】:

【参考方案1】:

我试过三种口味

    通过 API 网关进行所有通信 它使服务发现变得容易,所有通信都可以在一个点上被跟踪,但它增加了网关后面的服务的延迟(不是很多,而是一个额外的跃点)。您还可以剥离身份验证,这意味着所有服务,即使是网关后面的服务也需要获得正确的身份验证(这对于某些应用程序可能不是缺点,但对于其他应用程序来说,这很可能是) 通过网关的外部服务 它可以帮助您在网关处剥离身份验证。您可以对传入请求强制进行更严格的检查,您的服务直接相互通信(但这意味着它们需要以某种方式发现服务,我们使用基于 route53 的 dns,因此它们要命中的端点保持不变)。服务相互信任,这些通信不需要身份验证。 外部/内部网关 我们还有一个场景,我们必须获得两个 api 网关,一个原因是需要对两组网关进行不同类型的检查,并且每个网关都必须承受不同的负载。

【讨论】:

只是想知道第二个选项:您是否使用任何 ELB/ALB 进行 service-2-service 通信? 是的,我们使用了 ELB。【参考方案2】:

您可能需要考虑第一种方法(用于内部和外部调用的 API 网关)的两个问题:

1) 网关服务的负载会变高。如果内部服务平均调用任何其他内部服务,则网关服务的负载将增加一倍。这可能会导致额外的延迟,不仅仅是因为额外的跃点,还因为每个请求都必须通过网关服务上的额外负载进行协商。这将迫使您增强您的网关硬件(水平或垂直)而没有任何实际好处。

2) 一旦负载变高并触及网关服务实例的峰值容量,这些实例可能会开始耗尽其资源,尤其是处理线程或正在调用的线程。一般来说,这种情况可以通过减载或限制一些新请求来处理。这可能意味着在负载下降之前,我们可能只服务一部分请求。然而,在我们的例子中,不仅新请求受到影响,而且所有那些等待网关服务资源被释放以进行内部调用的正在运行的旧请求也被永远阻塞,直到它们超时,因为这些请求是等待自己完成。我们最终得到了一个死锁的系统,在负载下降之前根本不会提供任何请求。如果超时没有正确实现,它甚至可能会永久死锁并且需要回收实例。

无论如何,这些都是我们在设计微服务时需要解决的一些挑战,但在这种情况下,我们可以避免这些问题。

【讨论】:

来自微服务中 API 网关的异步响应

】来自微服务中API网关的异步响应【英文标题】:AsyncresponsefromAPIGatewayinmicroservices【发布时间】:2019-02-0807:22:48【问题描述】:在微服务架构中,建议:客户端应用程序到API网关的通信应该是同步的(例如RESToverhttp)。微服务通... 查看详情

API 网关在微服务架构中处理 Web 服务

...,我们将有一个API网关来正确路由这些东西。内部通信将通过REST完成(在第一次拍 查看详情

API网关和微服务通信

】API网关和微服务通信【英文标题】:APIgatewayandmicroservicescommunication【发布时间】:2019-10-0106:17:09【问题描述】:我正在构建微服务架构,我需要沟通方面的帮助。API网关与服务通信的最佳方法是什么?我的API网关将是graphqlapoll... 查看详情

springcloud--知识点

...完整的微服务解决方案框架   流程:请求统一通过API网关(Zuul)来访问内部服务。网关接收到请求后,从注册中心(Eureka)获取可用服务。由Ribbon进行均衡负载后,分发到后端具体实例。微服务之间通过Feign进行通信... 查看详情

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

...Kafka)相互连接的新服务。下一阶段是创建API端点,用于通过Api网关在移动应用和微服务之间进行通信。开发API网关以将数据传输到微服务/从微服务传输数据的最佳解决方案是什么?使用消息 查看详情

客户端可以绕过API网关调用前端微服务吗?

】客户端可以绕过API网关调用前端微服务吗?【英文标题】:Canclient-sidecallfrontendmicroservicesbypassingAPIgateway?【发布时间】:2018-02-1912:56:39【问题描述】:我们的系统是使用微服务构建的,这些微服务都位于API网关之后。因为它们... 查看详情

不允许直接调用微服务。只允许通过 API 网关

】不允许直接调用微服务。只允许通过API网关【英文标题】:Don\'tallowdirectcallstoMicroservices.OnlyallowthroughAPIGateway【发布时间】:2017-05-0620:57:39【问题描述】:也许这是一个奇怪的问题(我是微服务新手)。但我正在寻找有关如何... 查看详情

服务网关(zuul)

1.技术背景前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢?因为是RESTAPI接口,所以外部客户端直接调用各个微服务是没有问题的,但是出于种种原因,这并不是... 查看详情

kong个人分享(api网关)

...端和(微)服务间转发API通信的API网关和API服务管理层,通过插件扩 查看详情

基于springcloudgateway实现微服务网关(代码片段)

...都知道每个微服务都有各自的端口号,如果前端直接通过IP加端口的方式去调用微服务会很麻烦。如果想对请求增加限制也会变得十分困难。这个时候微服务网关就出现了。微服务网关又成为API网关,它是系统对外的唯一... 查看详情

基于springcloudgateway实现微服务网关(代码片段)

...都知道每个微服务都有各自的端口号,如果前端直接通过IP加端口的方式去调用微服务会很麻烦。如果想对请求增加限制也会变得十分困难。这个时候微服务网关就出现了。微服务网关又成为API网关,它是系统对外的唯一... 查看详情

SocketIO 与客户端和服务之间的网关通信?

...tes上)上运行的应用程序。与应用程序外部的所有通信都通过API网关进行。这只是意味着来自我的前端的请求不会直接发送到服务,而是必须通过网关。动 查看详情

与 HTTPS 微服务通信时,HTTPS 网关 API 无法验证第一个证书

】与HTTPS微服务通信时,HTTPS网关API无法验证第一个证书【英文标题】:HTTPSGatewayAPIUnabletoVerifyFirstCertificatewhencommunicatingtoHTTPSMicroservice【发布时间】:2021-03-2505:05:48【问题描述】:我在node/express中运行HTTPS网关API,并获得了从GoDadd... 查看详情

3分钟就会系列使用ocelot+consul搭建微服务吧!(代码片段)

...bsp;MicroService.APIGetway的ASP.NETWebApi项目。在该项目中,我们通过Nuget安装Ocelot,或者通过m命令行进行安装。注意:最新版的不建议使用,会出现一些内部错误,建议使用10.0.1以下的版本。创建相关文件夹 在其中应该创建服务 查看详情

我们应该在微服务之间使用api网关(例如zuul)吗?

】我们应该在微服务之间使用api网关(例如zuul)吗?【英文标题】:Shouldweuseapigateway(suchaszuul)betweenmicroservices?【发布时间】:2018-11-1103:01:40【问题描述】:毫无疑问,API网关应该是通往外部世界的边缘服务器。我们想知道我们... 查看详情

API 网关设计

】API网关设计【英文标题】:APIGatewayDesign【发布时间】:2019-01-0704:49:47【问题描述】:API网关http://microservices.io/patterns/apigateway.html似乎是微服务架构中采用的一个很好的模式(不是服务之间的内部通信)。但我有以下疑问我无... 查看详情

springcloud——微服务网关介绍

...引入API网关后,在用户端与微服务之间建立了一道屏障,通过API网关对微服务提供了统一的访问入口,所有用户端的请求被API网关拦截,并在此基础上可以实现额外的功能:OpenResty是一个强大的Web应用服务器,web开发人员可以使... 查看详情

微服务内部通信时的 SSL 证书主机名问题

...用程序,我们使用Zookeeper作为发现服务器。内部服务通信通过rest模板和feign客户端进行。我们使 查看详情