前言

在现代互联网架构中,负载均衡(Load Balancing)几乎是每一个高可用、高并发系统的基础组件之一。它在系统稳定性、扩展性与性能方面扮演着至关重要的角色。

定义

Wiki定义如下:

Load balancing is the process of distributing network traffic or computing workload across multiple servers to ensure no single server bears too much demand.

工作原理

一句话:通过将用户请求分发到多个后端服务器,实现系统的性能提升与容错能力。

属性与指标

负载均衡关注的核心属性与关键指标包括:

  1. Throughput(吞吐量):单位时间内能处理的请求数。
  2. Latency(延迟):请求从发送到收到响应所花的时间。
  3. Availability(可用性):服务可用性和容错能力。
  4. Health Check(健康检查):定期检测后端服务器状态。
  5. Session Persistence(会话保持):保持用户会话在同一服务器。
  6. Scalability(可扩展性):支持横向扩展能力。
  7. Failover(故障转移):在节点异常时快速转移请求。

类型

根据部署层级划分

  1. L4 Load Balancer(传输层):基于TCP/UDP端口做转发,例如 LVS。
  2. L7 Load Balancer(应用层):基于HTTP请求内容进行转发,例如 Nginx、Envoy。

根据部署位置划分

  1. Client-side Load Balancing:客户端选择目标服务节点,例如 gRPC + 服务发现。
  2. Server-side Load Balancing:请求统一通过负载均衡器分发,例如 ELB。
  3. DNS-based Load Balancing:通过 DNS 响应不同 IP 地址进行分发。

根据实现方式划分

  1. 硬件负载均衡器:如 F5、A10,专用于高吞吐量场景。
  2. 软件负载均衡器:如 Nginx、HAProxy、Traefik,灵活可扩展。
  3. 云服务负载均衡器:如 AWS ELB、GCP Load Balancing、阿里云 SLB。

负载均衡算法

常见的调度算法包括:

  1. 轮询(Round Robin)
  2. 加权轮询(Weighted Round Robin)
  3. 最少连接数(Least Connections)
  4. 加权最少连接(Weighted Least Connections)
  5. 一致性哈希(Consistent Hashing)
  6. 基于资源利用率的调度(如CPU/内存)

常见应用场景

  1. Web服务器分流
  2. 微服务请求分发
  3. CDN边缘节点选择
  4. 数据库读写分离
  5. 消息队列消费者均衡

常用负载均衡产品

负载均衡领域的主流产品与服务包括:

  1. Nginx:广泛使用的开源软件负载均衡器,支持 L7。
  2. HAProxy:高性能 TCP/HTTP 负载均衡软件。
  3. Envoy:现代服务网格架构中的 L7 代理,支持动态配置。
  4. Traefik:专为微服务设计,原生支持 Docker/K8s。
  5. LVS:Linux 内核层实现的 L4 负载均衡解决方案。
  6. F5 BIG-IP:企业级硬件负载均衡器。
  7. 云负载均衡:AWS ELB、GCP Load Balancer、Azure Load Balancer、阿里云 SLB 等。