API 网关 vs 负载均衡:选择适合你的网络流量管理组件

news2024/9/27 17:34:48

由于互联网技术的发展,网络数据的请求数节节攀升,这使得服务器承受的压力越来越大。在早期的系统架构中,通常使用负载均衡来将网络流量平摊到多个服务器中,以此减轻单台服务器的压力。但是现如今,后端服务的种类在不断地变多,每个种类的后端都以 API 的形式对外暴露,这使得 API 的数量也在不断变多。以传统的 负载均衡为主的系统架构的局限性就变得明显起来,因为它主要工作在四层,在七层上功能较弱,于是一款主要工作在七层且具有丰富扩展能力的基础设施便应运而生,它就是 API 网关。

在本文中,我们将介绍负载均衡和 API 网关的功能特点,并探讨它们之间的区别,帮助读者更好地了解这两者之间的关系。

一、什么是负载均衡(Load Balancer)

负载均衡的主要作用是为多个后端服务提供负载均衡功能,依据不同的负载均衡算法让这些服务可以分摊流量。负载均衡的历史非常悠久,从演进路径上看大致可以分为以下这几个阶段:

  • 第一阶段:这一阶段的负载均衡通常由硬件设备组成,具有高性能、高可靠性的特点,但灵活性较差,价格昂贵。比较典型的是 F5 这种基于硬件的负载均衡。

  • 第二阶段:负载均衡开始以软件形式实现,使其更加灵活和可扩展,通常以软件分发的形式出现,因此价格也比较低廉,比如 LVS 就属于这一类。

  • 第三阶段:随着云计算技术的兴起,负载均衡也开始有了云版本,这个版本的负载均衡其中一个好处是可以帮助企业以更低的成本获得高性能的负载均衡服务,另一个好处是它能够利用云计算的可扩展性和弹性的特点来提高整体可用性。例如 AWS 的 Classic Load Balancer、Application Load Balancer、Network Load Balancer 等。

负载均衡除了用于分摊流量、提高网络的伸缩性外,还可以用于提升网络安全。比如可以将内网服务器与外网进行隔离,防止互联网的恶意攻击和访问。一个简单的使用场景就是,一个包含敏感信息的内部服务器,负载均衡可以把内部服务器隔离在内网中,这样就能有效保护内部服务器的安全。

二、什么是 API 网关(Gateway)

API 网关简单来说是一种主要工作在七层,专门用于 API 的管理和流量转发的基础设施,并在此基础上拥有负载均衡所不具备的强大的扩展性,比如:认证、可观测性、自定义插件等等。简单来说,包括但不限于以下这些特点:

  • 丰富的路由策略:API 网关工作在七层,所以它可以解析到 HTTP/HTTPS 层的数据。因此它可以根据请求的 Path 或 Domain 甚至是 Header 作为条件,将请求转发到不同的上游服务器。

  • 认证:可以在API层面支持多种多样的认证方式来避免非法请求,比如 OAuth2、JWT 等等,直接将认证这部分服务独立出来,不侵入或者少侵入业务代码。

  • 限流:支持对不同程度的路由进行细粒度的限流,防止恶意攻击,防止后端服务雪崩。

  • 可观测性:可观察性是指从系统外部观察系统内部程序的运行状态和资源使用情况的能力。API 网关支持将日志对接到 Kafka、 Google Cloud Logging Service、Elasticsearch 等,支持将相关 metrics 接入到 prometheus、datadog 等。

  • 扩展:因为 API 网关自身是网关身份,这就注定对它要求是能适配各家公司不同应用场景,比如不同的鉴权、灰度、安全策略、日志收集等,必须允许用户自由选择所需扩展或者自定义开发,因此扩展性很强,允许选择的扩展种类也十分丰富。以 Apache APISIX 举例,光是认证的扩展就有 13 款,几乎涵盖了市面上常见的认证需求。

目前市面上有许多 API 网关,比如 Apache APISIX、Kong、Tyk、Zuul 等,开发者可以根据自己的需求选择合适的 API 网关。

三、API 网关与负载均衡主要区别

首先,他们主要工作的侧重点不同。虽然说 API 网关和负载均衡都支持四层和七层的代理。但是,API 网关主要侧重于七层,而负载均衡主要侧重于四层。

工作在四层的负载均衡拥有许多有利的特点,首先是它相比于 API 网关减少了协议解析的损耗,具有更强的吞吐能力。其次就是它支持透传客户端 IP 地址,而 API 网关,一般是通过 HTTP 头方式传递客户端 IP 地址。

其次就是功能的丰富程度不同。负载均衡的 HTTP 七层处理能力比较弱,往往不包含认证、授权、鉴权、复杂路由逻辑、日志收集等功能。API 网关则具有相当强大的七层协议处理能力,可以在此基础上,附加各种各样的功能扩展,比如权限控制、日志、API 管理、Serverless 等等。

现如今,科技公司的产品需求变幻莫测,对于很多公司来说支持自定义开发是刚需。API 网关支持各式的自定义开发,比如支持丰富的编程语言,支持在流量转发的不同阶段注入自定义的处理逻辑,而负载均衡基本不支持任何自定义功能开发。

还有一点就是负载均衡通常采用流量直接分发的形式做负载均衡,它通过算法将流量数据直接发向某个后端服务器节点。这意味着后端等待接收流量的每一个服务实例行为都必须是一致的,这减少了一定的灵活性。而 API 网关则是以 URL Path 、Domain、Header 等维度进行流量分发,后端等待接收流量的服务实例可以多种多样,可以是某个 Private API,也可以是某个 gRPC 的 API。这就使流量分发变得十分地灵活。

四、使用场景

微服务场景

API 网关对于采用了微服务架构的系统是刚需。首先它可以方便地管理和路由多种不同的后端服务,其次可以提供许多高级功能,比如身份验证、授权、限流、转发、日志记录等功能。这样不同的微服务之间无需重复实现限流、认证等功能,让微服务的每个服务的功能实现更加纯粹,减少研发成本。

由于微服务的特点是服务种类多,工作在四层的负载均衡不太适合对种类繁多后端服务做负载均衡,它更适合用于单体后端服务。即使是工作在七层的负载均衡,因为一般不能提供较为丰富的高级功能,相比于 API 网关在微服务上优势也不明显。

API 管理与发布

在需要对大量的 API 进行管理和发布的场景,API 网关也非常适用,因为它具有强大的 API 管理功能,可以让你随时随地让某个 API 上线或者下线,快速地修改 API 转发的配置,快速地为某个 API 添加限流、认证、日志等等功能而无需重新启动 API 网关。

以 Apache APISIX 为例,Apache APISIX 是 Apache 基金会旗下的顶级开源项目,也是当前最活跃的开源网关项目。作为一个动态、实时、高性能的开源 API 网关,Apache APISIX 提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

而传统的负载均衡则在 API 管理上较为弱势,不具备如此丰富的高级功能。

高性能的网络出入口

对于需要大流量、极高稳定性的网络出入口的场景,工作在四层的负载均衡显然更为适用。它可以把网络原始四层流量直接分发到各个后端服务中,不存在中间层多次解析应用层协议的影响,具有更强的吞吐能力。

而工作在七层的 API 网关作为统一的入口,会由于需要解析协议,存在一定的吞吐量限制。即使是使用四层的 API 网关来做网络出入口也不太有优势,因为这一层不是 API 网关的侧重点,相比于负载均衡多年在这一层的技术累计,API 网关优势也不明显。

总结

总的来说,API 网关和负载均衡是分别用于解决不同层面问题的基础设施。API 网关主要用于作为后端的 API 接口代理,提供对外访问不同种类 API 的一个单独入口,并且可以提供独立于后端服务的限流、认证、监控等功能;而负载均衡则主要用于四层流量分发,它可以将请求分摊到多台后端服务器上,平衡后端的请求负载,以提高系统的整体可用性和容错性。

在合理的架构设计下,一般都将 API 网关和负载均衡配合使用,使用负载均衡作为整个系统的网络出入口,将流量分发到多个 API 网关实例,然后每个 API 网关实例分别对请求进行路由、认证、鉴权等操作,这样可以使得整个网络更加稳健、可靠、可扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32-ADC模拟数字转换器

ADC 1、简介1.2、逐次逼近型ADC1.3 ADC基本结构转换模式触发控制数据对齐转换时间(针对高转换速率)校准硬件电路 2、软件编写初始化 1、简介 1、ADC(Analog-Digital Converter)模拟-数字转换器 2、ADC可以将引脚上连续变化的模拟…

【MySQL学习笔记】(一)MySQL数据库基础

MySQL数据库基础 1 MySQL 连接服务器指令2 mysql 和mysqld的区别3 数据库存储 VS 文件存储4 初次使用数据库 理解数据库是什么4.1 使用数据库4.2 小总结 5 主流数据库6 SQL分类7 存储引擎 1 MySQL 连接服务器指令 mysql -h 127.0.0.1 -P 3306 -u root -p-h 指明登录部署了mysq…

Vue3 简介

Vue3简介 01 Vue vue 是一个前端的框架,主要负责帮助我们构建用户的界面MVVM:Model - View - View Modelvue 负责 vm 的工作(视图模型),通过 vue 可以将视图和模型相关联。 当模型发生变化时,视图会自动更…

Quartus 实例应用(1)——EDA技术概述

EDA 技术概述 一、EDA技术及其发展二、Top-down 设计与 IP 核复用2.1 Top-down 设计2.2 Bottom-up 设计2.3 IP 复用技术与 SoC 三、数字设计的流程3.1 设计输入3.2 综合3.3 布局布线3.4 仿真3.5 编程配置 我们已经进入数字化和信息化的时代,其特点是各种数字产品的广…

UM2082F08三通道低频无线唤醒ASK接收芯片

UM2082F08 是基于单周期 8051 内核的超低功耗 8 位、 具有三通道低频无线唤醒 ASK 接收功能的 SOC 芯片。芯片可检测 30KHz~300KHz 范围的 LF(低频)载波频率数据并触发唤醒信号,同时可以调节接收灵敏度,确保在各种应用环境下实现可…

Python(request)爬虫有多强大

Python 的 requests 库是一个非常强大的网络爬虫工具,可以帮助开发人员快速,高效地从各种网站获取信息并处理数据。以下是 requests 库的一些强大功能: 1. 简单易用:requests 库的 API 设计合理,易于学习和使用。使用 …

“咸粽与甜粽”之争再启,五芳斋一季度亏损6393万

又是一年端午粽叶飘香,“咸粽与甜粽”之争再启。 4月29日,浙江五芳斋实业股份有限公司(下称“五芳斋”,603237.SH)公布了2022年报及2023年一季报。 财报公布后的首个交易日(5月4日),其股价下跌…

数据库监控与调优【二】—— 测试数据准备与数据操作工具

测试数据准备与数据操作工具 导入测试数据 使用MySQL官方测试数据库——employee-data 地址&#xff1a;https://dev.mysql.com/doc/index-other.html 下载项目&#xff0c;将项目传到服务器的/opt目录下 导入employees.sql语句 mysql -uroot -pImooc123456 < employe…

软考高级系统架构设计师(九) 作文模板-企业应用集成

目录 作文模板 例子-企业应用集成 摘要 项目相关背景及主要功能 你的岗位及主要职责 论文主体内容的总概 项目最终的实施效果或你的总结和感悟等 正文 项目背景介绍 相关问题回应 主体内容 论文结论 例子-类似方向- 作文模板 例子-企业应用集成 2021系统架构设计…

【App渗透】用BurpSuite抓包安卓手机app内容(详细)

文章目录 前言一、电脑端的配置二、BurpSuite的配置三、手机端的配置四、抓包总结 前言 很多情况下&#xff0c;在电脑的手机模拟器上面做app测试会存在大大小小的bug或者各种坑&#xff0c;而且有些模拟器很不方便&#xff0c;非常不好用。网上的教程虽然多&#xff0c;但是大…

【大数据之Hive】十六、Hive-HQL函数之窗口函数(开窗函数)

1 概述 先定义了窗口的大小&#xff08;按行来算&#xff09;&#xff0c;然后对窗口内的行的数据进行计算&#xff0c;再将计算结果返回给改行。   窗口函数包括窗口和函数两部分&#xff0c;窗口用于定义计算范围&#xff0c;函数用于定义计算逻辑&#xff0c;窗口函数只会…

React通过useContext特性实现组件数据传递

我们来说一个属性 useContext 这个确实用的挺少的 不过 还是简单做一下 打开我们的react项目 在src下创建一个文件夹 components 因为他是两个 甚至多个组件之间使用的 然后在components下创建两个组件 分别叫 dom.jsx dom1.jsx 命名命的比较不规范 不过本身只是做个案例 懒得做…

0-1背包

问题概述&#xff1a; 0-1背包是在n件物品取出若干件放在空间为V的背包里&#xff0c;每件物品的体积为v[ i ]&#xff0c;与之相对应的价值为w[ i ],要求在不超过背包空间的情况下&#xff0c;得到的物品的价值总和最大&#xff0c;问这个最大值是多少&#xff1f; 问题分析…

pod 知识点 下

上一篇分享了 pod 的基本知识点&#xff0c;有 K8S 环境的小伙伴还是可以用起来的&#xff0c;还对比较简单&#xff0c;知道了 pod 的 yaml 文件结构&#xff0c;标识&#xff0c;基本的创建 pod 和删除 pod 的用法等等&#xff0c;我们继续 pod 的基本分类 前面我们说到了 p…

什么是Natural Language Generation(NLG)?

文章目录 1.NLG的定义2.NLP的步骤3.NLG生成文本方式有哪些&#xff1f;3.1.简单的数据合并3.2.模板化的NLG3.3.高级NLG 4.NLG的应用有哪些&#xff1f; 1.NLG的定义 自然语言生成&#xff08;Natural Language Generation, NLG&#xff09;是NLP&#xff08;自然语言处理&…

Sikulix自动化工具的使用

1.Sikuli-x简介 Sikuli是识别和控制GUI组件进行UI自动化测试的技术&#xff0c;它是有MIT的研究人员开发进行设计的。Sikuli在墨西哥维乔印第安人(Huichol Indians)的语言里是上帝之眼的意思&#xff0c;Sikuli的工作模式与人眼一样&#xff0c;直接识别图像。 Sikuli-x是Sik…

1、Redis入门与安装配置

是什么&#xff1f; Remote Dictionary Server(远程字典服务) 是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高性能的Key-Value数据库。提供了丰富的数据结构&#xff0c;例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的&#xf…

python爬虫-逆向实例小记-2

注意&#xff01;&#xff01;&#xff01;&#xff01;某数据网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01;&#xff01; 案例分析 第一步&#xff1a;分析请求和响应内容。该网站任何一请求和内容都不可直接…

网站SEO优化的注意事项

SEO作为一种网络营销方式&#xff0c;高投入产出比是其优势所在。通过SEO优化为站点带来大量的主动搜索自然流量&#xff0c;对于企业主来说&#xff0c;是非常必要的。搜索引擎算法在不断发展&#xff0c;SEO技术也在不断发展。那么&#xff0c;如何能做好SEO呢&#xff1f;小…

投出去的简历无人问津,原因竟然在这……

近期收到了不少朋友的反馈说&#xff0c;失业半个月无人问津&#xff0c;放在前些年第二天开始面试有人找&#xff0c;或者是第二天入职了……&#xff0c;为啥明明不招人要挂着招人的岗位&#xff1f; 随着移动互联网的发展&#xff0c;Android市场的需求也在不断变化和升级。…