ALB、NLB、CLB 负载均衡深度剖析

ALB、NLB、CLB 负载均衡深度剖析

前言

笔者在上周的实际工作中遇到了一个典型的负载均衡选择问题:在使用代理调用相关模型时,最初配置 Nginx 的代理地址为 ALB 的 7 层虚拟 IP(VIP),但由于集团网络默认的超时时间为 3 分钟,导致服务调用频繁出现超时中断。尝试将代理地址切换为 NLB 的 4 层虚拟 IP 后,该问题得到了完美解决。这一亲身经历让我深刻体会到,不同类型的负载均衡在实际场景中的表现差异显著,选择合适的负载均衡类型对系统稳定性至关重要。基于此,本文将对 ALB、NLB、CLB 三种主流负载均衡进行深度剖析,帮助读者理解其技术原理与适用场景。

负载均衡(Load Balancer)是分布式系统中实现高可用、高并发的核心组件,其核心作用是将流量「合理分配」到多个后端服务节点,避免单点过载。根据工作层级和功能定位,常见的负载均衡可分为 CLB(传统负载均衡)NLB(网络负载均衡)ALB(应用负载均衡) 三类。以下从技术原理、核心特性、适用场景等维度深度解读。

一、CLB(Classic Load Balancer,传统负载均衡)

1. 定义

CLB 是最早出现的负载均衡类型,定位为「通用型基础负载均衡」,同时支持 四层(传输层)和七层(应用层)协议,但功能相对基础,主要满足简单的流量分配需求。

2. 工作层级

  • 四层(传输层):基于 TCP/UDP 协议,通过「源 IP + 端口、目标 IP + 端口、协议类型」对流量进行转发(类似 NAT 机制)。
  • 七层(应用层):基于 HTTP/HTTPS 协议,可解析 URL、主机头(Host)等简单应用层信息,但路由能力有限。

3. 核心特性

  • 基础负载均衡算法:支持轮询(Round Robin)、加权轮询、最小连接数等简单策略。
  • 健康检查:通过 TCP 端口探测或 HTTP 状态码(如 200 OK)判断后端节点是否可用。
  • 会话保持:基于 Cookie 或源 IP 绑定会话,确保同一用户请求转发到同一后端节点。
  • 兼容性:支持几乎所有传统服务器和应用,无需改造后端服务。

4. 优势

  • 部署简单:配置门槛低,适合新手或快速搭建场景。
  • 兼容性强:支持老旧系统和多种协议,无需后端服务适配。
  • 成本较低:功能简单,资源消耗少,运维成本低。

5. 局限性

  • 性能上限低:并发能力有限(通常十万级以下),难以应对超大规模流量。
  • 功能简陋:不支持复杂路由(如基于 URL 路径的精细化转发)、HTTP/2、WebSocket 等现代协议。
  • 扩展性弱:无法适配微服务、容器化等复杂架构的动态流量调度需求。

6. 适用场景

  • 中小型 Web 应用(如企业官网、简单电商网站)。
  • 传统 TCP/UDP 服务(如邮件服务器、简单数据库代理)。
  • 对成本敏感、无需复杂功能的场景。

二、NLB(Network Load Balancer,网络负载均衡)

1. 定义

NLB 是专为「高性能、低延迟」设计的四层负载均衡,仅工作在传输层(TCP/UDP),聚焦于解决大规模流量的高效分发问题。

2. 工作层级

  • 四层(传输层):基于「源 IP、源端口、目标 IP、目标端口、协议类型」的五元组进行流量转发,不解析应用层数据(如 HTTP 内容)。

3. 核心特性

  • 超高并发能力:支持百万级并发连接,单机吞吐量可达数十 Gbps。
  • 微秒级延迟:转发逻辑基于内核态实现(如 Linux 内核的 XDP 技术),比用户态转发快 1-2 个数量级。
  • 弹性与高可用:自动适配后端节点扩缩容,支持跨可用区部署,单点故障不影响整体服务。
  • 静态 IP 支持:可绑定固定 IP 或弹性 IP,方便客户端固定接入点。
  • 基础健康检查:基于 TCP 端口探测(如三次握手是否成功)或 UDP 报文响应。

4. 优势

  • 性能天花板高:是三种负载均衡中「纯转发能力」最强的,适合超大规模流量场景。
  • 稳定性强:设计目标是「无状态转发」,自身故障概率极低。
  • 适配动态场景:可快速响应后端节点的增减(如 Kubernetes 容器的动态扩缩容)。

5. 局限性

  • 不支持应用层功能:无法基于 URL、HTTP 头信息等应用层数据进行路由,也不支持 SSL 终止(需后端服务自行处理 HTTPS)。
  • 健康检查简单:仅能判断节点「是否存活」,无法检测应用层异常(如节点存活但返回 500 错误)。

6. 适用场景

  • 高并发 TCP 服务(如大型游戏服务器、金融交易系统)。
  • 实时音视频流传输(如直播、视频会议)。
  • IoT 设备通信(海量设备的 UDP 数据上报)。
  • 需要低延迟的科学计算集群、分布式存储访问入口。

三、ALB(Application Load Balancer,应用负载均衡)

1. 定义

ALB 是针对「应用层精细化流量调度」设计的七层负载均衡,工作在 HTTP/HTTPS 协议层,能深度解析应用层数据并实现灵活路由。

2. 工作层级

  • 七层(应用层):基于 HTTP/HTTPS 协议,可解析 URL 路径、主机头(Host)、HTTP 方法(GET/POST)、请求头(Header)等应用层信息。

3. 核心特性

  • 精细化内容路由:支持基于 URL 路径(如 /api/v1/* 转发到服务 A,/web/* 转发到服务 B)、主机头(如 a.example.com 到服务 X,b.example.com 到服务 Y)的转发策略。
  • SSL 终止与卸载:在 ALB 层处理 SSL 握手和加密解密,后端服务仅需处理 HTTP 流量,降低服务器负载。
  • 高级健康检查:基于 HTTP 响应码(如 200 正常,503 异常)、响应内容(如检查返回的 JSON 字段)判断应用状态。
  • 协议兼容性:支持 HTTP/2、WebSocket、gRPC 等现代应用协议。
  • 会话管理:通过 Cookie 或路径实现会话粘性(Sticky Sessions),适配需要保持用户状态的场景(如购物车)。

4. 优势

  • 灵活适配复杂架构:是微服务、Serverless 等现代架构的「流量入口首选」,可作为 API 网关使用。
  • 应用层可见性:能收集请求日志(如响应时间、错误码),便于问题排查和性能分析。
  • 安全性增强:可集成 WAF(Web 应用防火墙)、限流、黑白名单等功能,过滤恶意请求。

5. 局限性

  • 性能略低于 NLB:因需解析应用层协议,转发延迟比 NLB 高(毫秒级),并发能力通常在数十万级。
  • 仅支持七层协议:无法直接处理 TCP/UDP 裸流量(需配合 NLB 或 CLB 实现四层转发)。

6. 适用场景

  • 微服务架构(如 Spring Cloud、Kubernetes 集群的流量入口)。
  • API 网关(统一管理接口路由、认证、限流)。
  • 复杂 Web 应用(如需要按路径拆分的前后端分离项目)。
  • HTTPS 服务(利用 SSL 终止降低后端服务器负载)。

四、ALB、NLB、CLB 核心差异对比

维度CLB(传统负载均衡)NLB(网络负载均衡)ALB(应用负载均衡)
工作层级四层 + 七层(基础支持)仅四层(TCP/UDP)仅七层(HTTP/HTTPS)
并发能力十万级以下百万级以上数十万级
延迟毫秒级微秒级毫秒级(略高于 NLB)
核心功能基础负载均衡、简单健康检查高性能转发、低延迟、弹性伸缩精细化路由、SSL 终止、应用层监控
协议支持TCP、UDP、HTTP、HTTPS(基础)TCP、UDPHTTP、HTTPS、HTTP/2、WebSocket、gRPC
适用架构传统单体应用高并发网络服务微服务、Serverless、复杂 Web 应用
典型场景中小型 Web 应用、简单 TCP 服务游戏服务器、视频流、IoT 通信API 网关、微服务入口、HTTPS 服务

五、总结与选择建议

  1. 追求极致性能选 NLB:当服务需要处理百万级并发(如游戏、直播),且仅需四层转发时,NLB 是最优解。
  2. 需应用层灵活路由选 ALB:微服务、API 网关、复杂 Web 应用等场景,ALB 的精细化路由和应用层功能不可替代。
  3. 简单场景选 CLB:传统单体应用、预算有限或无需复杂功能时,CLB 部署快、成本低,能满足基础需求。

实际生产中,三者也可组合使用(如 ALB 处理七层流量,NLB 处理四层流量,通过 CLB 兼容老旧系统),形成多层负载均衡架构,兼顾性能、灵活性和兼容性。

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

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

相关文章

历史数据分析——云南白药

医药板块走势分析: 从月线级别来看 2008年11月到2021年2月,月线上走出了两个震荡中枢的月线级别2085-20349的上涨段; 2021年2月到2024年9月,月线上走出了20349-6702的下跌段; 目前月线级别放巨量,总体还在震荡区间内,后续还有震荡和上涨的概率。 从周线级别来看 从…

【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++

《Effective Modern C》第3章 Moving to Modern C 一、区分圆括号 () 与大括号 {} (Item 7) C11 引入统一初始化(brace‑initialization),即使用 {} 来初始化对象,与传统的 () 存在细微差别:避…

Rust基础-part1

Rust基础[part1]—安装和编译 安装 ➜ rust curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh安装成功 [外链图片转存中…(img-ClSHJ4Op-1752058241580)] 验证 ➜ rust rustc --version zsh: command not found: rustc因为我是用的是zsh,所以zsh配置…

PyQt5布局管理(QGridLayout(网格布局))

QGridLayout(网格布局) QGridLayout(网格布局)是将窗口分隔成行和列的网格来进行排列。通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout() 函数将布局(Layou…

Java设计模式之行为型模式(责任链模式)介绍与说明

一、核心概念与定义 责任链模式是一种行为型设计模式,其核心思想是将请求沿着处理对象链传递,直到某个对象能够处理该请求为止。通过这种方式,解耦了请求的发送者与接收者,使多个对象有机会处理同一请求。 关键特点: 动…

SQL server之版本的初认知

SQL server之版本的初认知 为什么要编写此篇文档呢,主要是因为在最近测试OGG实时同步SQL server数据库表数据的时候,经过多次测试,发现在安装了一套SQL server2017初始版本,未安装任何补丁的时候,在添加TRANDATA的时候…

【前端】jQuery动态加载CSS方法总结

在jQuery 中动态加载 CSS 文件有多种方法&#xff0c;以下是几种常用实现方式&#xff1a; 方法 1&#xff1a;创建 <link> 标签&#xff08;推荐&#xff09; // 动态加载外部 CSS 文件 function loadCSS(url) {$(<link>, {rel: stylesheet,type: text/css,href:…

Python爬虫实战:研究xlwings库相关技术

1. 引言 在金融科技快速发展的背景下,数据驱动决策已成为投资领域的核心竞争力。金融市场数据具有海量、多源、实时性强等特点,传统人工收集与分析方式难以满足高效决策需求。Python 凭借其丰富的开源库生态,成为金融数据分析的首选语言。结合 Requests、BeautifulSoup 等爬…

Linux 内核日志中常见错误

目录 **1. `Oops`****含义****典型日志****可能原因****处理建议****2. `panic`****含义****典型日志****可能原因****处理建议****3. `BUG`****含义****典型日志****可能原因****处理建议****4. `kernel NULL pointer`****含义****典型日志****可能原因****处理建议****5. `WA…

Linux驱动开发2:字符设备驱动

Linux驱动开发2&#xff1a;字符设备驱动 字符设备驱动开发流程 字符设备是 Linux 驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。比如最常见的点灯、按键、 IIC、 SPI&#x…

RuoYi-Cloud 验证码处理流程

以该处理流程去拓展其他功能模块处理流程&#xff0c;进而熟悉项目开发代码一、思路JavaWeb流程主干线&#xff1a;发起请求、处理请求、响应请求二、登录页面在登录页面按键F12打开开发者工具&#xff0c;点击network&#xff0c;刷新页面&#xff0c;点击code&#xff0c;查看…

云计算三大服务模式深度解析:IaaS、PaaS、SaaS

架构本质&#xff1a;云计算服务模式定义了资源抽象层级和责任分担边界&#xff0c;形成从基础设施到应用的全栈服务金字塔。三种模式共同构成云计算的服务交付模型核心框架。一、服务模式全景图 #mermaid-svg-f0Klw2fbuhBQqJTh {font-family:"trebuchet ms",verdana…

【sql学习之拉链表】

1.拉链表理解 记录历史。记录一个事物从开始&#xff0c;一直到当前状态的所有变化的信息。字段说明&#xff1a; start_dt&#xff1a;该条记录的生命周期开始时间 end_dt&#xff1a;该条记录的生命周期结束时间 end_dt’9999/12/31’表示该条记录目前处于有效状态 如果查询当…

STM32中实现shell控制台(shell窗口输入实现)

文章目录 一、总体结构二、串口接收机制三、命令输入与处理逻辑四、命令编辑与显示五、历史命令管理六、命令执行七、初始化与使用八、小结在嵌入式系统开发中,使用串口Shell控制台是一种非常常见且高效的调试方式。本文将基于STM32平台,分析一个简洁但功能完整的Shell控制台…

区分三种IO模型和select/poll/epoll

部分内容来源&#xff1a;JavaGuide select/poll/epoll 和 三种IO模型之间的关系是什么&#xff1f;区分普通IO和IO多路复用普通IO&#xff0c;即一个线程对应一个连接&#xff0c;因为每个线程只处理一个客户端 socket&#xff0c;目标明确&#xff1a;线程中直接操作该 socke…

Actor-Critic重要性采样原理

目录 AC的数据低效性&#xff1a; 根本原因&#xff1a;策略更新导致数据失效 应用场景&#xff1a; 1. 离策略值函数估计 2. 离策略策略优化 3. 经验回放&#xff08;Experience Replay&#xff09; 4. 策略梯度方法 具体场景分析 场景1&#xff1a;连续策略更新 场…

【赠书福利,回馈公号读者】《智慧城市与智能网联汽车,融合创新发展之路》

「5G行业应用」公号作家团队推出《智慧城市与智能网联汽车&#xff0c;融合创新发展之路》。本书由机械工业出版社出版&#xff0c;探讨如何通过车城融合和创新应用&#xff0c;促进汽车产业转型升级与生态集群发展&#xff0c;提升智慧城市精准治理与出行服务效能。&#xff0…

5G NR PDCCH之处理流程

本节主要介绍PDCCH处理流程概述。PDCCH&#xff08;Physical Downlink Control Channel&#xff0c;物理下行控制信道&#xff09;主要用于传输DCI&#xff08;Downlink Control Information&#xff0c;下行控制信息&#xff09;&#xff0c;用于通知UE资源分配&#xff0c;调…

力扣网编程135题:分发糖果(贪心算法)

一. 简介本文记录力扣网上涉及数组方面的编程题&#xff1a;分发糖果。这里使用贪心算法的思路来解决&#xff08;求局部最优&#xff0c;最终求全局最优解&#xff09;&#xff1a;每个孩子只需要考虑与相邻孩子的相对关系。二. 力扣网编程135题&#xff1a;分发糖果&#xff…

每日mysql

什么是Mysql索引最左匹配原则&#xff1f;最左匹配原则是指&#xff0c;在复合索引中&#xff0c;查询条件需要从左到右和索引开始依次完全匹配的时候&#xff0c;复合索引才可以被有效使用。因为联合索引在建立b树的过程中是根据索引的顺序从左到右进行排序的&#xff0c;所以…