负载均衡器和 API Gateway 混淆

Posted

技术标签:

【中文标题】负载均衡器和 API Gateway 混淆【英文标题】:Load balancer and API Gateway confusion 【发布时间】:2020-07-25 05:48:07 【问题描述】:

我一直致力于移动技术,现在我正在涉足后端系统,更具体地说是系统设计。我不断遇到关于 api 网关和负载均衡器角色的冲突声明。谷歌搜索只返回了相同的六个结果,主要集中在一些著名服务提供的负载均衡器或 api 网关服务的实现上。我将在这里列出我所面临的所有困惑,希望有人能澄清所有这些。

有时,我发现 API 网关是与客户端设备的单点通信。另一方面,有些地方提到“请求转到负载均衡器,它在服务器之间平均分布”。那么什么是正确的呢? API Gateway 接收请求或负载均衡器?

其他地方,当我搜索主题时,说两者完全不同。我知道 API Gateway 做了很多事情,比如 SSL 终止、日志记录、限制、验证等,但它也做负载平衡。那么 API Gateway 本身就是一个负载均衡器,配备了其他职责?

关于这个话题,我想了解负载均衡器是在同一集群的服务器之间分配负载,还是跨不同的数据中心或集群? API 网关呢?

api 网关有什么特别之处,以至于默认情况下它是微服务架构的选择? API 网关托管在哪里? DNS 将域名解析为负载均衡器或 api 网关?

可能很清楚,我完全糊涂了。如果问题正确,负载均衡器在哪些系统中比 API 网关受益更多。

【问题讨论】:

【参考方案1】:

负载平衡器: 它的主要目的是通过负载均衡在多个后端系统之间分配流量。

    我们可以为不同的后端系统配置不同的路由。 我们获得负载平衡端点的静态 IP 地址(通常不适用于 API 网关) 可以配置运行状况检查(通常不适用于 API 网关)

对于云提供商,通常“也为闲置付费

API 网关: 这也会根据 URL 将流量路由到后端系统

BUT,其主要目的是针对“API管理”。 以下是“负载均衡器”中通常提供的此类关键功能,

    可以实现速率限制、突发限制 可以进行请求验证和请求/响应映射 通常云 API 网关允许使用 swagger 规范导出/导入跨 API 平台 允许缓存响应 对于云提供商,通常是“按使用付费

【讨论】:

【参考方案2】:

API 网关和负载均衡器是两个不同的东西。

负载均衡器 -> 它是一个在协议或套接字级别(例如 tcp、http 或端口 3306 等)工作的软件。它的工作是通过将传入流量分配到具有各种逻辑的目的地来平衡传入流量(例如。循环赛)。 我不提供授权检查、请求身份验证等功能。

API Gateway -> 它是由各种托管公司提供的托管服务,用于管理 API 操作以无缝扩展 API 基础设施。 它负责访问控制、响应缓存、响应类型、授权、身份验证、请求限制、数据处理、根据自定义规则识别正确的目的地以及无缝扩展后端。 默认情况下,一般托管 API 网关带有可扩展的基础设施,因此将它们放在负载均衡器后面可能没有意义。

关于解析域,DNS 很可能总是解析到负载均衡器,而负载均衡器又从 API 网关服务获取响应。

DNS -> 负载均衡器 -> API 网关 -> 后端服务

希望我能解释并消除您的困惑。

【讨论】:

【参考方案3】:

API 网关主要执行 API 管理,并提供各种其他关键功能,例如 IAM(身份和访问管理)、速率限制、断路器。因此,它主要消除了为每个微服务的安全、缓存、节流和监控等功能实现 API 特定代码的需要。微服务通常会在 API 网关的帮助下公开 REST API 以供在前端、其他微服务和 3rd 方应用程序中使用。

但是,API 管理通常不包含负载均衡功能,因此应与负载均衡器配合使用以实现相同的功能。

在基于 Azure 的系统架构中,有 Azure 应用程序网关,它是一个运行在第 7 层的负载均衡器,在使用基于附加属性的路由决策来路由流量方面,它提供了比传统负载均衡器(第 4 层)更多的功能。 HTTP 请求或流量内容。这也可以称为应用程序负载平衡器。它应与 Azure API 管理(API 网关)结合使用。 Azure 有一个用于在 DNS 级别运行的流量管理器,它使用 DNS 根据流量路由方法和端点的运行状况将客户端请求定向到最合适的服务端点。流量管理器还使用在 DNS 级别配置的规则,并支持将负载分布到多个区域和数据中心。在每个区域或数据中心内,都应有与负载均衡器耦合的应用程序网关,这样,应用程序网关将有助于确定要从中获取响应的应用程序服务器,而负载均衡器将有助于负载均衡。

基于 Azure 的系统概览:

以下是一些相关的参考资料:

    Azure 应用程序网关 - https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-introduction

    Azure 负载均衡器-https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview

    Azure 流量管理器 - https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview

    场景架构 - https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-load-balancing-azure

【讨论】:

它不是正确的 100%。 API 网关在哪里?

以上是关于负载均衡器和 API Gateway 混淆的主要内容,如果未能解决你的问题,请参考以下文章

API网关spring cloud gateway和负载均衡框架ribbon实战

Springcloud + nacos + gateway 负载均衡(ribbon)

springcloud之Ribbon,Feign,Hystrix,Gateway介绍

Spring Cloud Gateway整合Nacos实现服务路由及集群负载均衡

应用程序负载均衡器 + Nginx http 到 https 重定向给出 502 Bad Gateway

Spring cloud gateway自定义filter以及负载均衡