关于后端:API-Gateway-vs-Load-Balancer选择适合你的网络流量管理组件

43次阅读

共计 3815 个字符,预计需要花费 10 分钟才能阅读完成。

本文从比照了 API Gateway 和 Load Balancer 的性能区别,帮忙读者更好地理解他们在零碎架构中表演的角色。

作者陈泵,API7.ai 技术工程师。

原文链接

因为互联网技术的倒退,网络数据的申请数节节攀升,这使得服务器接受的压力越来越大。在晚期的零碎架构中,通常应用 Load Balancer 来将网络流量平摊到多个服务器中,以此加重单台服务器的压力。然而现如今,后端服务的品种在一直地变多,每个品种的后端都以 API 的模式对外裸露,这使得 API 的数量也在一直变多。以传统的 Load Balancer 为主的零碎架构的局限性就变得显著起来,因为它次要工作在四层,在七层上性能较弱,于是一款次要工作在七层且具备丰盛扩大能力的基础设施便应运而生,它就是 API Gateway。

在本文中,咱们将介绍 Load Balancer 和 API Gateway 的性能特点,并探讨它们之间的区别,帮忙读者更好地理解这两者之间的关系。

一、什么是 Load Balancer

Load Balancer 的次要作用是为多个后端服务提供负载平衡性能,根据不同的负载平衡算法让这些服务能够摊派流量。Load Balancer 的历史十分悠久,从演进门路上看大抵能够分为以下这几个阶段:

  • 第一阶段:这一阶段的 Load Balancer 通常由硬件设施组成,具备高性能、高可靠性的特点,但灵活性较差,价格昂贵。比拟典型的是 F5 这种基于硬件的 Load Balancer。
  • 第二阶段:Load Balancer 开始以软件模式实现,使其更加灵便和可扩大,通常以软件散发的模式呈现,因而价格也比拟低廉,比方 LVS 就属于这一类。
  • 第三阶段:随着云计算技术的衰亡,Load Balancer 也开始有了云版本,这个版本的 Load Balancer 其中一个益处是能够帮忙企业以更低的老本取得高性能的负载平衡服务,另一个益处是它可能利用云计算的可扩展性和弹性的特点来进步整体可用性。例如 AWS 的 Classic Load Balancer、Application Load Balancer、Network Load Balancer 等。

Load Balancer 除了用于摊派流量、进步网络的伸缩性外,还能够用于晋升网络安全。比方能够将内网服务器与外网进行隔离,避免互联网的歹意攻打和拜访。一个简略的应用场景就是,一个蕴含敏感信息的外部服务器,Load Balancer 能够把外部服务器隔离在内网中,这样就能无效爱护外部服务器的平安。

二、什么是 API Gateway

API Gateway 简略来说是一种次要工作在七层,专门用于 API 的治理和流量转发的基础设施,并在此基础上领有 Load Balancer 所不具备的弱小的扩展性,比方:认证、可观测性、自定义插件等等。简略来说,包含但不限于以下这些特点:

  • 丰盛的路由策略:API Gateway 工作在七层,所以它能够解析到 HTTP/HTTPS 层的数据。因而它能够依据申请的 Path 或 Domain 甚至是 Header 作为条件,将申请转发到不同的上游服务器。
  • 认证:能够在 API 层面反对多种多样的认证形式来防止非法申请,比方 OAuth2、JWT 等等,间接将认证这部分服务独立进去,不侵入或者少侵入业务代码。
  • 限流:反对对不同水平的路由进行细粒度的限流,避免歹意攻打,避免后端服务雪崩。
  • 可观测性:可察看性是指从零碎内部察看零碎外部程序的运行状态和资源应用状况的能力。API Gateway 反对将日志对接到 Kafka、Google Cloud Logging Service、Elasticsearch 等,反对将相干 metrics 接入到 prometheus、datadog 等。
  • 扩大:因为 API Gateway 本身是网关身份,这就注定对它要求是能适配各家公司不同利用场景,比方不同的鉴权、灰度、安全策略、日志收集等,必须容许用户自由选择所需扩大或者自定义开发,因而扩展性很强,容许抉择的扩大品种也非常丰盛。以 Apache APISIX 举例,光是认证的扩大就有 13 款,简直涵盖了市面上常见的认证需要。

目前市面上有许多 API Gateway,比方 Apache APISIX、Kong、Tyk、Zuul 等,开发者能够依据本人的需要抉择适合的 API Gateway。

三、API Gateway 与 Load Balancer 次要区别

首先,他们次要工作的侧重点不同。尽管说 API Gateway 和 Load Balancer 都反对四层和七层的代理。然而,API Gateway 次要侧重于七层,而 Load Balancer 次要侧重于四层。

工作在四层的 Load Balancer 领有许多无利的特点,首先是它相比于 API Gateway 缩小了协定解析的损耗,具备更强的吞吐能力。其次就是它反对透传客户端 IP 地址,而 API Gateway,个别是通过 HTTP 头形式传递客户端 IP 地址。

其次就是性能的丰盛水平不同。Load Balancer 的 HTTP 七层解决能力比拟弱,往往不蕴含认证、受权、鉴权、简单路由逻辑、日志收集等性能。API Gateway 则具备相当弱小的七层协定解决能力,能够在此基础上,附加各种各样的性能扩大,比方权限管制、日志、API 治理、Serverless 等等。

现如今,科技公司的产品需要变幻莫测,对于很多公司来说反对自定义开发是刚需。API Gateway 反对各式的自定义开发,比方反对丰盛的编程语言,反对在流量转发的不同阶段注入自定义的解决逻辑,而 Load Balancer 根本不反对任何自定义性能开发。

还有一点就是 Load Balancer 通常采纳流量间接散发的模式做负载平衡,它通过算法将流量数据间接发向某个后端服务器节点。这意味着后端期待接管流量的每一个服务实例行为都必须是统一的,这缩小了肯定的灵活性。而 API Gateway 则是以 URL Path、Domain、Header 等维度进行流量散发,后端期待接管流量的服务实例能够多种多样,能够是某个 Private API,也能够是某个 gRPC 的 API。这就使流量散发变得非常地灵便。

四、应用场景

微服务场景

API Gateway 对于微服务架构的零碎是刚需。首先它能够不便地治理和路由多种不同的后端服务,其次能够提供许多高级性能,比方身份验证、受权、限流、转发、日志记录等性能。这样不同的微服务之间无需反复实现限流、认证等性能,让微服务的每个服务的性能实现更加纯正,缩小研发老本。

因为微服务的特点是服务品种多,工作在四层的 Load Balancer 不太适宜对品种繁多后端服务做负载平衡,它更适宜用于单体后端服务。即便是工作在七层的 Load Balancer,因为个别不能提供较为丰盛的高级性能,相比于 API Gateway 在微服务上劣势也不显著。

API 治理与公布

在须要对大量的 API 进行治理和公布的场景,API Gateway 也十分实用,因为它具备弱小的 API 治理性能,能够让你随时随地让某个 API 上线或者下线,疾速地批改 API 转发的配置,疾速地为某个 API 增加限流、认证、日志等等性能而无需重新启动 API Gateway。

以 Apache APISIX 为例,Apache APISIX 是 Apache 基金会旗下的顶级开源我的项目,也是以后最沉闷的开源网关我的项目。作为一个动静、实时、高性能的开源 API 网关,Apache APISIX 提供了负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。

而传统的 Load Balancer 则在 API 治理上较为弱势,不具备如此丰盛的高级性能。

高性能的网络出入口

对于须要大流量、极高稳定性的网络出入口的场景,工作在四层的 Load Balancer 显然更为实用。它能够把网络原始四层流量间接散发到各个后端服务中,不存在中间层屡次解析应用层协定的影响,具备更强的吞吐能力。

而工作在七层的 API Gateway 作为对立的入口,会因为须要解析协定,存在肯定的吞吐量限度。即便是应用四层的 API Gateway 来做网络出入口也不太有劣势,因为这一层不是 API Gateway 的侧重点,相比于 Load Balancer 多年在这一层的技术累计,API Gateway 劣势也不显著。

四、总结

总的来说,API Gateway 和 Load Balancer 是别离用于解决不同层面问题的基础设施。API Gateway 次要用于作为后端的 API 接口代理,提供对外拜访不同品种 API 的一个独自入口,并且能够提供独立于后端服务的限流、认证、监控等性能;而 Load Balancer 则次要用于四层流量散发,它能够将申请摊派到多台后端服务器上,均衡后端的申请负载,以进步零碎的整体可用性和容错性。

在正当的架构设计下,个别都将 API Gateway 和 Load Balancer 配合应用,应用 Load Balancer 作为整个零碎的网络出入口,将流量散发到多个 API Gateway 实例,而后每个 API Gateway 实例别离对申请进行路由、认证、鉴权等操作,这样能够使得整个网络更加持重、牢靠、可扩大。

对于 API7.ai 与 APISIX

API7.ai 是一家提供 API 解决和剖析的开源根底软件公司,于 2019 年开源了新一代云原生 API 网关 — APISIX 并捐献给 Apache 软件基金会。尔后,API7.ai 始终踊跃投入反对 Apache APISIX 的开发、保护和社区经营。与千万贡献者、使用者、支持者一起做出世界级的开源我的项目,是 API7.ai 致力的指标。

正文完
 0