负载均衡与反向代理 · 必记博客大全

🔥 重点前置(先记住这些,面试/排障直接拿来用)

一、核心定义 · 一句话记住

  • 正向代理:代理的是客户端。帮你翻墙、隐藏你 IP 的那个中间人。客户端主动配置代理,目标服务器看不到真正客户端,只能看到代理服务器。
  • 反向代理:代理的是服务器集群。你访问某个大网站,背后可能是几百台服务器轮流为你服务,但你以为你在访问一台机器。客户端无需任何配置,对客户端完全透明。反向代理提供负载均衡、安全防护、缓存加速等能力。
  • 负载均衡:把请求均匀分发给后端的多台服务器。它依赖于反向代理的转发机制,可以说是反向代理的一种核心能力,当反向代理后面挂多台服务器时就自动升级为负载均衡。

二、面试必问 · 核心对比表

对比维度 正向代理 反向代理 负载均衡器
代理对象 客户端 服务器集群 同反向代理(其核心功能)
客户端是否需要配置 ✅ 需要配置代理服务器 ❌ 不需要,对客户端透明 ❌ 不需要
典型用途 翻墙、匿名访问、访问控制 负载均衡、安全隔离、缓存加速、SSL 终止 高并发分流、消除单点故障
是否有意义 单台即可 单台即可 2 台以上才有意义
知道背后是谁吗 客户端知道在访问代理 客户端不知道真实的服务器 同反向代理
常用实现 Squid、Shadowsocks、VPN Nginx、HAProxy、Apache Nginx、LVS、AWS ELB

负载均衡器专注于分发请求、消除单点故障、实现水平扩展,因此至少需要两个或以上的后端服务器才有意义;而反向代理只有一台服务器也可以发挥它的功能。

三、负载均衡算法 · 面试必背清单

算法 原理 适用场景 一句话
轮询 按顺序轮流分配 服务器性能相近、无状态服务(静态资源) 最公平
加权轮询 按权重比例分配请求 服务器性能参差不齐(新老机器混用) 强的多干
最少连接 分配给当前连接数最小的服务器 长连接服务(WebSocket、数据库连接池) 谁闲给谁
IP 哈希 基于客户端 IP 固定分配给同一台服务器 需要会话保持(购物车、登录态) 认准不换
一致性哈希 服务器变更时只影响少量映射关系 分布式缓存(Memcached/Redis 集群扩容) 平稳扩容

加粗记住:性能强配 weight、长连接用 least_conn、会话用 ip_hash、缓存用一致性哈希。

四、主流工具 · 选型速查

工具 层级 特点 一句话选型
Nginx L7 轻量、高并发、配置灵活 中小项目首选,80% 场景够用
HAProxy L4+L7 性能极致、支持 TCP/HTTP 大型生产、长连接、四层负载选它
LVS L4 内核级转发、性能最高 极端高并发、网关级别的选择
F5 L4+L7 硬件设备、价格昂贵 有钱、需要硬件的企业场景
Spring Cloud Gateway L7 响应式编程、微服务生态 Java 微服务架构必选
Kong L7 基于 Nginx、插件丰富、做 API 管理 需要 API 管理/商业化的团队

五、一句话避坑 · 常见误区

  • 误区 1:Nginx 只能做 7 层代理 → ✅ Nginx 从 1.9.0 起支持 stream 模块做 4 层代理(TCP/UDP)。
  • 误区 2:有了反向代理就可以没有负载均衡 → ✅ 一台服务器上配置反向代理也可以,但负载均衡主要靠多台后端。
  • 误区 3:反向代理本身就是负载均衡 → ✅ 反向代理是实现负载均衡的基础手段之一,但负载均衡还有 DNS 负载均衡、客户端负载均衡等多种形式。
  • 误区 4:负载均衡器和反向代理是一回事 → ✅ LB 主要用于分发,反向代理还能额外做缓存、SSL 卸载、安全防护。

六、云服务商 · SLB 产品线对比

云厂商的负载均衡产品命名和层级差异很大,一句话记住:

  • L4 选 NLB(高性能 TCP/UDP,追求极致性能)
  • L7 选 ALB(HTTP/HTTPS 高级路由,按需付费弹性伸缩)
  • 老项目用 CLB(传统稳定,适合不追求弹性的场景)
厂商 L4 产品 L7 产品 说明
阿里云 NLB ALB(CLB 兼容 L4+L7) NLB 单实例最大支持 1 亿并发连接,ALB 单实例最大 100 万 QPS
腾讯云 CLB(L4) CLB(L7)/ALB 传统 CLB 同时支持四层和七层
华为云 NLB ALB ELB 分成独享型 L4/L7 和共享型

七、面试题快答模板

Q:正向代理和反向代理的本质区别是什么?

正向代理代理客户端,客户端知道自己在用代理,目标服务器只看到代理 IP。反向代理代理服务端,客户端根本不知道有代理存在,以为直接访问服务器,所有请求经过代理再转发。

Q:负载均衡有哪些实现层级?

两种:L4 传输层(基于 IP 和端口,工作在内核级,如 LVS),L7 应用层(基于 HTTP 内容,如 Nginx 做 URL 路由)。L4 性能更高但功能少,L7 功能丰富但有一定损耗。

Q:Nginx 负载均衡如何实现会话保持?

ip_hash 将同一客户端 IP 的请求固定到同一台后端,或者使用 sticky 模块做 cookie 级别的会话保持。

Q:Nginx 如何做高可用?

Nginx 本身只是软件,单点故障无法避免。需要在多台服务器上部署 Nginx,再用 Keepalived 通过 VRRP 协议实现 VIP 漂移,主节点挂了备节点自动接管。


📚 博客大全 · 按主题索引

一、原理与概念

  1. 反向代理与负载均衡:构建高可用服务架构的实践指南(百度开发者中心)
    核心价值在于构建服务入口统一抽象层,通过代理服务器实现请求分发、安全隔离与性能优化,包含三大组件:代理服务层→负载调度层→服务集群层。涵盖轮询、加权轮询、最少连接、IP 哈希等常见策略。
  2. 常用组件——正向代理、反向代理、CDN(阿里云开发者)
    全面讲解正向代理(代替客户端发起连接)、反向代理(隐藏真实服务器,提供负载均衡/安全防护/缓存加速)、CDN 服务原理。
  3. 简明入门讲义——一文理清负载均衡和反向代理(腾讯云)
    负载均衡器是为了分配请求、解决单点问题而生的,因此必须是两个或以上才有意义;反向代理一个服务器也可以,类似设计模式的外观模式(Facade Pattern)。
  4. 正向代理和反向代理(详细定义+应用场景)(阿里云开发者)
    正向代理可以隐藏客户端真实 IP、绕过限制、缓存加速;反向代理主要用于负载均衡、缓存、安全防护、SSL 终止。具体实用场景非常详细。
  5. 彻底理解正向代理和反向代理(含图解)(腾讯云)
    通过 Facebook 访问的例子讲透代理概念,包含关键区别表格:正向代理需要设置代理信息、反向代理不需要任何配置;正向代理是客户端→服务器的转发代理,反向代理是网站内部负载均衡做的集群转发。
  6. 图解正向代理、反向代理、透明代理(腾讯云)
    通过图解方式展示反向代理与正向代理的区别:反向代理中客户端向反向代理的命名空间发送普通请求,反向代理判断向何处(原始服务器)转交请求。
  7. 正向代理和反向代理:两者的区别与实现(百度开发者中心)
    正向代理隐藏客户端真实地址,反向代理隐藏目标服务器真实地址。反向代理可以对请求进行负载均衡、过滤、限流等处理,提高系统的可扩展性和稳定性。

二、Nginx 深度实践

  1. Nginx 负载均衡:从原理到实战的深度解析(百度开发者中心)
    超详细实战指南,涵盖 upstream 模块、五种核心策略(轮询/加权轮询/最少连接/IP 哈希/通用哈希)、健康检查配置(max_fails+fail_timeout)、会话保持(ip_hash)、生产环境部署模板。
  2. Nginx 反向代理实战教程:从入门到精通的多场景配置指南(腾讯云)
    三个实战场景全覆盖:负载均衡+健康检查、动静分离+缓存优化、安全加固+限流配置,proxy_set_header 传递真实客户端 IP 的细节很关键。
  3. Nginx 负载均衡:原理、配置与高可用实践(百度开发者中心)
    四种核心算法的适用场景分析:轮询适合无状态服务,最少连接长连接场景性能比轮询高 15%,IP 哈希需小心服务器故障时的关联 IP 会话丢失。
  4. Nginx 负载均衡:原理、配置与高可用实践指南(百度开发者中心)
    介绍七层与四层负载均衡策略,涵盖 Nginx 的 stream 模块做四层代理的能力。
  5. Nginx 实用篇:实现负载均衡、限流与动静分离(腾讯云)
    负载均衡配置基础、限流(limit_req)、动静分离配置全套。
  6. Nginx 与 Tomcat 协同:构建高可用负载均衡群集(百度开发者中心)
    Nginx 反向代理结合 Tomcat 部署群集,架构设计覆盖 Nginx 反向代理层、Tomcat 应用服务层、共享存储层。
  7. Nginx 之动静分离解读(华为云开发者社区)
    动静分离核心思路:动态资源由 Nginx 反向代理转发给应用服务器,静态资源(图片/CSS/JS)由 Nginx 直接返回。优势在于分担负载、减轻 Web 服务器压力,适合大负载场景。
  8. Ubuntu 上 Nginx 如何实现负载均衡(亿速云)
    实操型教程,手把手教如何在 Ubuntu 上安装配置 Nginx 负载均衡集群。
  9. Nginx+keepalived 双机热备详解(华为云)
    高可用必读!部署双机热备的完整步骤:在两台服务器上安装 Nginx 和 Keepalived→配置 Nginx 服务相同→配置 Keepalived(VRRP 协议)+ VIP 漂移→测试故障转移。

三、负载均衡算法专题

  1. 负载均衡算法深度解析(阿里云开发者)
    覆盖随机&加权随机、轮询&加权轮询、最小活跃数、源地址哈希、一致性哈希五种算法,选型建议清晰。

四、微服务与网关

  1. Spring Cloud Gateway 深度解析:现代 API 网关的路由、过滤与断言实战(腾讯云)
    性能数据硬核:吞吐量可达 Zuul 1.x 的 3-5 倍,平均延迟降低 60% 以上。基于 WebFlux 响应式编程,与 Spring 生态深度集成。
  2. Java 开发常用 5 种微服务网关优劣势对比(百度开发者中心)
    对比 Zuul、Spring Cloud Gateway、Kong 等,方便技术选型。
  3. API 网关 vs 反向代理 vs 负载均衡器:理解它们之间的差异(APISeven 社区)
    三者的横向对比:负载均衡器在多个实例之间分发请求,反向代理保护/缓存响应,API 网关管理具体的 API 逻辑。

五、底层/网关级方案(LVS/HAProxy)

  1. LVS 深度解析:负载均衡软件中的技术标杆与实战指南(百度开发者中心)
    LVS 在内核层工作,支持 NAT、DR、TUN 三种模式,性能极高、资源消耗极小。适合需要极致性能的场景(单集群百万级并发连接、微秒级调度)。
  2. LVS+Keepalived:实现高效软负载均衡的利器(阿里云开发者)
    LVS+Keepalived 搭建高可用集群,避免 IP 单点故障。
  3. OpenStack 中 HAProxy 负载均衡的深度实践与优化策略(百度开发者中心)
    HAProxy 支持 L4(TCP 模式)或 L7(HTTP 模式),与 Keepalived 配合可做主备高可用负载均衡器,适用于企业生产环境。

六、Kubernetes & 云原生

  1. Nginx Ingress 工作原理(阿里云)
    Ingress 是一种 Kubernetes 资源,基于 Nginx 反向代理实现 HTTP/HTTPS 路由和负载均衡,规定请求应被转发到哪个 Service 的 Pod 上。
  2. Istio 服务网格网关与负载均衡(Istio 官方文档)
    Istio Ingress/Egress Gateway 基于 Envoy 实现,可作为服务网格入口的反向代理,接管微服务之间的请求流量,支持灰度发布、流量镜像、故障注入等高级功能。

七、云端负载均衡选型

  1. 阿里云负载均衡 SLB 三款产品价格功能与选型(阿里云开发者)
    CLB(传统型,100 万并发/5 万 QPS)、ALB(应用型七层,100 万 QPS 弹性伸缩)、NLB(网络型四层,1 亿并发连接 NFV 虚拟化)。
  2. ALB、NLB、CLB 选型指南(百度云)
    NLB 四层低延迟高吞吐,ALB 七层智能路由内容识别,何时选四层何时选七层的判断标准。
  3. AWS 负载均衡类型对比(AWS 官方)
    ALB 适用于 HTTP/HTTPS 负载均衡,NLB 适用于 TCP、需要保留客户端源 IP 的场景。

🛠️ 推荐学习路径

  • 刚入门:先看「原理与概念」分类中的第 2 篇(阿里云常用组件)和第 3 篇(腾讯云入门讲义)
  • 想上手 Nginx:从第 8 篇(Nginx 从原理到实战)开始,完整配置一次 upstream 和反向代理
  • 准备面试:背下「重点前置」部分的对比表和算法清单,再加上第 5 篇(正向反向代理区别图解)
  • 微服务方向:看第 18 篇(Spring Cloud Gateway)和第 19 篇(微服务网关对比)
  • 高并发/底层优化:看第 21 篇(LVS)和第 23 篇(HAProxy)
  • K8s 云原生:看第 24 篇(Nginx Ingress)和第 25 篇(Istio)

📖 延伸阅读关键词

  • 四层 vs 七层负载均衡:L4 基于 IP+端口,L7 基于 HTTP 内容
  • VRRP 协议:Keepalived 实现高可用依赖的底层协议
  • 一致性哈希 + 缓存:分布式缓存选型核心算法,减少服务器增删时的数据迁移
  • Sidecar 模式:Istio 的服务网格实现方式,每个 Pod 配一个 Envoy 代理
  • SSL/TLS Termination:反向代理的重要能力——SSL 证书统一放在代理层,后端服务不用都配证书
  • 健康检查:max_fails+fail_timeout,自动摘除故障节点
  • 会话保持 vs 无状态:ip_hash 解决会话保持,但更建议将后端设计为无状态
    无状态
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐