集中式负载均衡 vs. 分布式负载均衡

集中式负载均衡 vs. 分布式负载均衡

负载均衡(Load Balancing)是任何可伸缩系统的“交通警察”。
集中式负载均衡(Centralized LB)与分布式负载均衡(Distributed LB)代表了两种截然不同的“指挥哲学”:
• 前者“单点决策、统一调度”,简单、成熟、易观测;
• 后者“多点自治、协同决策”,弹性、低延迟、高可用。
二者在微服务、云原生、边缘计算、Service Mesh 等场景中并存,互为补充。


一、知识点框架速览

维度集中式负载均衡分布式负载均衡
决策位置独立 LB 节点(硬件或软件)每个客户端或服务实例
控制面单点或主备去中心化、最终一致
数据面流量必经 LB流量直连目标实例
典型实现LVS、Nginx、HAProxy、ELB、F5Envoy、Finagle、Linkerd、客户端 SDK、一致性哈希
适用规模中小规模、南北向流量大规模、东西向流量
故障域LB 单点局部节点失效影响小
运维复杂度高(需治理、观测、版本管理)

二、集中式负载均衡详解

2.1 架构与组件
Internet
VIP
RS1
RS2
RS3
Health Check
Health Check
Health Check
User
Centralized LB
LVS/Nginx/ELB
Service A-1
Service A-2
Service A-3
  • VIP(Virtual IP):对外唯一入口,DNS 指向 VIP。
  • 调度算法:RR、WRR、LC、WLC、IP-Hash、一致性哈希、最少连接等。
  • 健康检查:TCP/HTTP/GRPC 探活,失败即摘除。
  • 会话保持:Source IP Hash、Cookie Insert、Sticky Table。
  • 高可用:Keepalived + VRRP、BGP Anycast、双活 LB 集群。
2.2 优势
  • 简单:部署、监控、排障都围绕一个或一组 LB。
  • 功能丰富:SSL 终端、WAF、限流、缓存、压缩、灰度发布。
  • 透明:对后端服务零侵入,语言栈无关。
2.3 局限
  • 单点瓶颈:带宽、PPS、SSL 握手数、连接表大小。
  • 延迟叠加:流量多一跳,RTT 增加 0.2~1 ms。
  • 爆炸半径:LB 故障导致全集群不可用。
  • 水平扩展上限:ECMP 最多 8~16 条等价路径,再多会哈希不均。

三、分布式负载均衡详解

3.1 架构范式
  1. 客户端侧负载均衡
    每个调用方(Consumer)内置负载均衡逻辑,通过注册中心(Consul/Eureka/Nacos)实时感知 Provider 列表。
  2. 边车代理(Sidecar)
    每个 Pod/VM 部署 Envoy,拦截进出流量,由控制面(Istiod)下发路由规则。
  3. 无代理直连
    gRPC 内置负载均衡策略(pick_first、round_robin、weighted_target),直接连目标 IP。
3.2 决策流程
ConsumerRegistryProvider-1Provider-2Subscribe service list[P1,P2,P3] + metadataLocal LB algorithmDirect TCP/HTTP callResponseConsumerRegistryProvider-1Provider-2
  • 负载感知:基于实时延迟、错误率、QPS、权重、实例标签。
  • 故障转移:熔断、重试、离群摘除(Outlier Detection)。
  • 版本路由:金丝雀、A/B、按 Header 染色。
3.3 优势
  • 零单点:任何节点故障只影响局部。
  • 低延迟:流量直发,无额外 hop。
  • 弹性扩展:节点数线性增加,吞吐线性提升。
  • 细粒度治理:按方法级、按用户级、按地域级路由。
3.4 挑战
  • 治理复杂:需要统一 SDK、版本管理、灰度升级。
  • 观测困难:调用链分散,需分布式追踪(OpenTelemetry)。
  • 网络放大:注册中心推送风暴、心跳风暴。
  • 多语言:每种语言都要实现或引入 Sidecar。

四、对比与选型

比较维度集中式分布式
部署成本低(买几台 LB 即可)高(Sidecar、注册中心、控制面)
运维心智传统网络运维即可需 DevOps + SRE + 网络
性能上限受限于 LB 规格随节点数线性增长
功能扩展依赖 LB 厂商可自定义 Filter、Lua/Wasm
故障域全局局部
适用场景入口网关、南北向、SSL 卸载微服务东西向、Service Mesh、边缘节点

五、混合模式实践

现代云原生平台往往“分层负载均衡”:
L4 集中式:Anycast + ECMP 做全局流量入口,解决 BGP 收敛、DDoS 清洗。
L7 分布式:Envoy Sidecar 做服务间调用,实现金丝雀、熔断、限流。
边缘自治:边缘节点内置轻量级 LB(如 Traefik、Nginx Unit),在断网场景下继续服务本地用户。


六、总结

结论说明
没有银弹集中式与分布式不是“谁取代谁”,而是“谁更适合哪一层”。
分层治理入口用集中式,内部用分布式,边缘用自治式。
可观测优先无论哪种模式,统一 Metrics、Tracing、Logging 是落地前提。

架构师洞见
集中式负载均衡像“机场塔台”,简单可控,但容量有限;分布式负载均衡像“每架飞机自带 TCAS”,复杂却弹性无限。
• 未来趋势是“控制面集中、数据面分布”:用统一控制面下发策略,用分布式数据面执行决策,兼顾治理与性能。

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

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

相关文章

【机器学习】9 Generalized linear models and the exponential family

本章目录 9 Generalized linear models and the exponential family 281 9.1 Introduction 281 9.2 The exponential family 281 9.2.1 Definition 282 9.2.2 Examples 282 9.2.3 Log partition function 284 9.2.4 MLE for the exponential family 286 9.2.5 Bayes for the e…

EndNote 2025 Mac 文献管理工具

原文地址:EndNote 2025 Mac 文献管理工具 EndNote mac版一款文献管理工具,支持国际期刊的参考文献格式有3776种,写作模板几百种,涵盖各个领域的杂志。 EndNote mac不仅仅局限于投稿论文的写作,对于研究生毕业论文的写…

openEuler系统中home文件夹下huawei、HwHiAiUser、lost+found 文件夹的区别和作用

在 openEuler 系统的 /home 目录下出现的 huawei、HwHiAiUser 和 lost+found 文件夹,分别对应不同的功能和用途,具体区别和作用如下: 1. lost+found 文件夹 通用 Linux 系统文件夹:lost+found 是所有 Linux 系统(包括 openEuler)中默认存在的文件夹,并非 openEuler 特有…

Electron 核心 API 全解析:从基础到实战场景

Electron 凭借丰富的 API 体系,让前端开发者能轻松调用系统级能力。本文将系统梳理 Electron 核心 API 的分类、使用场景及实战示例,帮你快速掌握从窗口管理到进程通信的全场景开发。 一、主进程核心 API(Main Process) 主进程是…

创建线程的方式有哪些?

1. 创建线程的方式有哪些?继承Thread类实现runnable接口实现Callable接口线程池创建线程(项目中使用方式)2. runnable 和 callable 有什么区别?Runnable接口run方法没有返回值Callable接口call方法有返回值,需要FutureTask获取结果Callable接口的call()方法允许抛出异常;而Ru…

More Effective C++ 条款05: 谨慎定义类型转换函数

More Effective C 条款05:谨慎定义类型转换函数核心思想:C中的隐式类型转换虽然方便,但容易导致意外的行为和维护难题。应当通过explicit关键字和命名转换函数等方式严格控制类型转换,优先使用显式转换而非隐式转换。 &#x1f68…

基于springboot的理商管理平台设计与实现、java/vue/mvc

基于springboot的理商管理平台设计与实现、java/vue/mvc

Flask蓝图:模块化开发的利器

蓝图为什么要使用蓝图模块化组织:将应用分解为可重用的模块(组件)。每个蓝图封装了相关的视图、静态文件、模板等。按功能划分:将大型应用按功能模块划分(例如:用户认证、博客、管理后台)&#…

设计模式详解

1.创建类型1.1 简单工厂startuml抽象产品接口 interface Product { Operation(): string } 具体产品A class ConcreteProductA { Operation(): string } 具体产品B class ConcreteProductB { Operation(): string } 工厂类 class Factory { CreateProduct(type: string): Produ…

前端查漏补缺

插槽默认、具名&#xff08;多个插槽&#xff09;、作用域&#xff08;接收子组件数据&#xff09;//具名 <div class"container"><header><slot name"header"></slot></header><main><slot></slot></…

网络协议UDP、TCP

一、网络协议 UDPUDP用户数据报协议&#xff1a;传输层网络编程模型B/S模型&#xff1a;browser/server&#xff08;浏览器/服务器&#xff09;客户端是通用的客户端&#xff08;浏览器&#xff09;一般只做服务器开发客户端要加载的数据均来自服务器C/S模型&#xff1a;client…

STM32 TIM_SelectInputTrigger()函数

一、函数功能与定位​TIM_SelectInputTrigger()是STM32定时器外设的关键配置函数&#xff0c;用于设置从模式定时器的触发源&#xff08;Trigger Source&#xff09;​。其核心作用是将定时器的内部事件或外部信号映射为触发信号&#xff08;TRGI&#xff09;&#xff0c;进而控…

Lecture 6 Kernels, Triton 课程笔记

本讲座&#xff1a;基准测试/分析 编写内核 总结 编程模型&#xff08;PyTorch、Triton、PTX&#xff09;与硬件之间的差距 > 性能奥秘 理解扩展的基准测试 用于理解 PyTorch 函数内部结构的分析&#xff08;用内核触底&#xff09; 看 PTX 汇编&#xff0c;了解 CUDA 内核…

Spring Boot 整合网易163邮箱发送邮件实现找回密码功能

在开发用户系统时&#xff0c;发送邮件是一项常见需求&#xff0c;例如用户忘记密码时&#xff0c;通过邮箱发送验证码来验证身份并重置密码。本文将结合 Spring Boot 和 163 邮箱&#xff0c;演示如何实现邮件发送功能。 一、前提条件 普通用户的 163 邮箱可以在 Spring Boot…

如何在mac玩windows游戏?3个工具推荐,不用换电脑!

Mac电脑虽然很流畅&#xff0c;但它也存在局限性&#xff0c;其中一点游戏玩家应该深有体会&#xff0c;那就是无法直接玩Windows专属游戏&#xff0c;只能对着琳琅满目的游戏望眼欲穿。别急&#xff0c;我有办法让你在mac玩windows游戏&#xff0c;下面就来分享我的经验。一、…

自回归(Auto-Regressive, AR),自回归图像生成过程

根据论文中“**T2I Generation via Next-Token Prediction**”一节&#xff0c;自回归&#xff08;Auto-Regressive, AR&#xff09;文本到图像&#xff08;T2I&#xff09;模型的图像生成过程可分为三个主要步骤&#xff0c;其原理和损失函数如下&#xff1a;---### &#x1f…

在mysql中,modify ,change ,rename to的作用是什么

在 MySQL 中&#xff0c;MODIFY、CHANGE 和 RENAME TO 都是 ALTER TABLE 语句的一部分&#xff0c;用于修改表的结构&#xff0c;但它们的作用和使用场景有所不同。1. MODIFY作用&#xff1a;用于修改表中现有列的定义&#xff0c;但不能修改列名。你可以使用 MODIFY 来更改列的…

【JVM】JVM的内存结构是怎样的?

JVM的内存结构是Java程序运行时内存管理的核心&#xff0c;不同区域有明确的职责。 一、整体划分 包括两大部分&#xff0c;分为线程私有区域(随线程创建/销毁&#xff0c;无需垃圾回收)和线程共享区域(所有线程共用&#xff0c;需要垃圾回收管理)。 线程私有区域&#xff1a;程…

青少年软件编程(python五级)等级考试试卷-客观题(2023年12月)

更多内容和历年真题请查看网站&#xff1a;【试卷中心 -----> 电子学会 ----> 机器人技术 ----> 五级】 网站链接 青少年软件编程历年真题模拟题实时更新 青少年软件编程&#xff08;python五级&#xff09;等级考试试卷-客观题&#xff08;2023年12月&#xff0…

网络编程-创建TCP协议服务器

int socket(int domain, int type, int protocol);头文件&#xff1a; #include <sys/socket.h>#include <netinet/in.h> #include <netinet/ip.h>int skt_tcpfd;int domain;skt_tcpfdsocket(AF_INET,SOCK_STREAM,0);int bind(int sockfd, const struct soc…