← 返回题目列表

常见的负载均衡方式有哪些?

高频 中等 第 4 / 27 题 更新于 2026/07/28
负载均衡LVSNginx四层七层

简化版

负载均衡把请求分摊到多台服务器,避免单点压力。按所在网络层次分:DNS 负载均衡(解析时返回不同 IP,最粗粒度)、四层负载均衡(工作在传输层,按 IP + 端口转发,如 LVS、F5,快)、七层负载均衡(工作在应用层,能看 HTTP 内容按 URL/Header 转发,如 Nginx、HAProxy,灵活)。常见分层:DNS 分区域 → 四层扛流量 → 七层做精细路由

详细版

类型工作层次依据代表特点
DNS 负载均衡解析阶段地理/轮询返回不同 IP智能 DNS/GSLB最粗粒度、无法感知服务器实时状态
四层(L4)传输层IP + 端口LVS、F5只转发不看内容,性能极高
七层(L7)应用层HTTP 内容(URL、Header、Cookie)Nginx、HAProxy能精细路由,功能强但开销略高

常见的负载均衡算法:轮询(Round Robin)、加权轮询、最少连接(Least Connections)、IP 哈希(同一 IP 固定到同一台,用于会话保持)、一致性哈希。

完整版教学

一、四层 vs 七层:看不看得到「内容」

这是负载均衡最核心的区分,本质是工作在哪一层、能看到什么信息

  • 四层负载均衡(传输层):只看到 IP 和端口,不解析应用层内容。它像个「只看信封地址、不拆信」的分拣员——收到数据包,根据 IP+端口选一台后端转发过去,不关心里面是 HTTP 还是别的。因为不用解析内容、只转发,所以性能极高(LVS 能扛百万级并发)。
  • 七层负载均衡(应用层):能拆开 HTTP 报文看内容——URL 路径、Host、Header、Cookie 都能看到。于是它能做精细路由/api 转给后端 A、/static 转给后端 B,或按 Cookie 做会话保持。功能强大,但要解析内容,开销比四层大。

简单权衡:四层快但「瞎」(只按 IP/端口),七层「聪明」但略慢(能按内容路由)。

二、DNS 负载均衡:最前置、最粗粒度

DNS 负载均衡在解析阶段就分流:给一个域名配多个 A 记录,DNS 每次返回不同的 IP(轮询),或按地理位置返回最近的 IP(GSLB,就是 CDN 用的那套,详见「CDN 工作原理」那道题)。

  • 优点:实现简单、天然全局(能跨地域分流)、成本低。
  • 缺点粒度粗、不感知服务器实时状态——DNS 不知道某台服务器挂了还是过载,可能把用户解析到已宕机的 IP;加上 DNS 缓存,摘除故障节点有延迟。

所以 DNS 负载均衡通常做第一层的地域级粗分流,具体到机房内还要四层/七层做精细分发。

三、典型的分层架构

大型系统往往把三者组合分层使用:

用户
 │ ① DNS 负载均衡:按地域解析到最近的机房入口

四层负载均衡(LVS):高性能地把流量分到一组七层节点
 │ ②

七层负载均衡(Nginx):按 URL/Header 精细路由到具体的后端服务
 │ ③

后端服务器集群

层层分工:DNS 分区域、四层扛大流量、七层做精细路由。每层解决它最擅长的问题。

四、负载均衡算法怎么选

  • 轮询 / 加权轮询:依次分配,服务器性能不均时用加权。最常用、最简单。
  • 最少连接:优先给当前连接数最少的服务器,适合请求处理时长差异大的场景。
  • IP 哈希 / 一致性哈希:按客户端 IP 哈希固定到某台,用于会话保持(让同一用户总落到同一台,避免 session 丢失)。一致性哈希在节点增减时能减少缓存/会话的大规模迁移。

五、常见误区

  • ❌ 把四层和七层搞混——四层看 IP+端口(快、不看内容),七层看 HTTP 内容(能精细路由)。
  • ❌ 以为 DNS 负载均衡能感知服务器状态——它不知道某台挂没挂,摘除故障有延迟,只适合粗分流。
  • ❌ 以为负载均衡只有一种——通常是 DNS + 四层 + 七层分层组合。
  • ❌ 忽略会话保持——无状态服务随便分,有状态(依赖本地 session)要用 IP 哈希或把 session 外置。

六、常见误区与追问

考点正确口径
四层负载均衡基于 IP/端口转发 TCP/UDP 流量
七层负载均衡理解 HTTP 等应用层信息做路由
算法轮询、加权、最少连接、一致性哈希
request -> load balancer
  /api    -> service A pool
  /image  -> service B pool
health check failed -> remove backend

负载均衡不是平均分请求这么简单,还要健康检查、会话策略、扩缩容和故障摘除。

  • 误区:轮询一定能让后端压力均匀。 请求耗时、连接时长和机器配置不同,简单轮询可能仍造成负载不均。
  • 误区:四层负载均衡能按 URL 路由。 四层只看连接层信息,按路径、Header 路由通常要七层负载均衡。
  • 误区:加了负载均衡就不会雪崩。 后端依然需要限流、熔断、隔离、超时和容量规划。
  • 追问:健康检查为什么重要? 它能及时摘除异常实例,避免流量继续打到坏节点。
  • 追问:会话保持有什么代价? 粘性会话降低调度灵活性,某节点故障时用户状态可能受影响。
  • 追问:一致性哈希适合什么? 适合缓存或有状态路由,节点变化时尽量减少 key 迁移。

七、加强记忆

负载均衡按层次分:DNS 负载均衡(解析返回不同 IP,最粗、做地域分流、不感知服务器状态)、四层(传输层,按 IP+端口转发,快,如 LVS)、七层(应用层,能看 HTTP 内容按 URL/Header 精细路由,如 Nginx)。大型架构常「DNS 分区域 → 四层扛流量 → 七层精细路由」分层组合;算法有轮询/最少连接/IP 哈希(会话保持)等。