负载均衡策略一般分为静态策略(不感知后端真实负载) 和动态策略(根据后端实时状态调度),不同组件(Nginx、LVS、HAProxy、云 LB、K8s Service)支持的策略略有差异。
一、静态负载均衡策略
调度规则提前定义,不检查后端服务器当前连接数、CPU、内存,只按算法分发请求。
1. 轮询(Round Robin)
默认策略,请求依次转发给后端每台服务器,平均分配。
✅ 优点:简单,适合后端性能一致、无状态服务
❌ 缺点:无法区分服务器负载;长连接、请求耗时差异大时不均衡
适用:静态资源、短连接 API,后端硬件配置相同
2. 加权轮询(Weighted Round Robin,WRR)
给每台机器配置权重,权重越高分到的请求越多。
✅ 优点:适配后端服务器性能不一样的场景,高配机器承担更多流量
❌ 缺点:权重固定,不能感知实时负载;突发长请求会造成不均衡
适用:混合配置服务器集群
3. IP 哈希(IP Hash)
对客户端 IP 做哈希计算,同一个客户端 IP 永远调度到同一台后端。
✅ 优点:会话保持,不需要额外 session 共享
❌ 缺点:单点故障时该 IP 用户会话丢失;容易哈希倾斜(部分机器流量过大);NAT 出口场景大量用户共用 IP,负载不均
适用:需要会话保持、无 session 共享方案的场景
变种:源端口哈希、URL 哈希,按 URL / 端口哈希,同一资源固定打到同一后端,适合缓存集群。
4. 一致性哈希(Consistent Hash)
相比普通 IP Hash,后端节点增减时,只有少量哈希映射失效,大量会话不受影响。
✅ 优点:节点扩容 / 缩容时,缓存失效范围小
❌ 缺点:实现复杂;节点少时容易负载倾斜
适用:Redis 集群、对象存储、缓存服务
5. 最少连接数(静态版很少,属于动态)
归到下面动态策略
二、动态负载均衡策略
调度器实时采集后端连接数、响应时间、CPU 负载,动态选择节点。
1. 最少连接(Least Connections,LC)
把新请求转发给当前活跃连接数最少的服务器。
✅ 优点:自动适配请求处理时间差异,慢请求多的机器不会持续堆请求
❌ 缺点:新上线空负载机器会瞬间涌入大量流量(流量尖峰)
适用:长连接服务(数据库、WebSocket)、请求处理时间差异大的业务
2. 加权最少连接(Weighted Least Connections,WLC)
最少连接 + 权重,综合权重 + 当前连接数计算。
✅ 优点:兼顾服务器硬件能力和实时连接数,企业最常用策略(LVS 默认)
适用:混合配置后端,长 / 短连接混合业务
3. 最短响应时间(Least Response Time,LRT)
取连接数 + 平均响应时间综合打分,优先选响应最快的节点。HAProxy、云 LB 常用。
✅ 优点:不只看连接,还看服务处理快慢,自动避开卡顿节点
❌ 缺点:需要采集响应耗时,有少量开销;瞬时抖动会误判
适用:API 网关、Web 业务
4. 最少带宽 / 最少数据包
基于网络流量指标调度,适合大文件传输、流媒体集群。
三、其他特殊策略
1. 随机(Random)
随机挑选后端节点,简单,流量大时会趋近均衡;小流量场景不均衡。
2. 备用节点(Backup)
主节点全部不可用时,才启用备用服务器。
适用:灾备、冷备服务
3. 本地优先(Local)
优先调度本机后端实例,跨机房 LB、K8s 本地域优先调度,减少跨机房流量费用。
4. 队列调度(队列限流)
每个后端设置最大连接队列,满了直接拒绝,防止雪崩。
四、常用负载均衡组件支持策略速览
五、选型建议(工程落地)
后端同配置、短连接无状态 Web/API:加权轮询
后端性能不一致、长连接:加权最少连接 WLC
缓存集群:一致性哈希
需要会话保持(尽量优先 Redis 共享 session,少用 IP Hash):IP Hash(备选)
跨机房多活:本地优先 + 加权轮询,配合健康检查
数据库代理:最少连接,禁止简单轮询(慢查询会堆积)
重要配套:健康检查不属于调度算法,但必须配套使用,自动剔除宕机 / 超时节点,否则任何策略都无法保证高可用。
补充:四层 vs 七层策略差异
四层 LB(LVS、云四层 SLB):基于 IP + 端口,只能做连接级调度,看不到 HTTP 内容,不能按 URL、Cookie 调度;
七层 LB(Nginx、HAProxy、云七层 SLB):解析 HTTP,支持 URL 哈希、Cookie 会话保持、按请求内容路由。