核心要点
选择负载均衡策略时,真正的问题不是”用不用负载均衡”,而是如何根据后端特征和流量模式选择决策算法。Traefik 的四种服务器级策略覆盖了从最简单到最复杂的全部场景,且可以与服务级策略(加权、镜像、故障转移)组合使用。
四种核心策略
| 策略 | 算法 | 适用场景 | 核心假设 |
|---|---|---|---|
| WRR(Weighted Round Robin) | 公平轮询,可选权重 | 同构后端、可预测负载 | 所有请求成本相近 |
| P2C(Power of Two Choices) | 随机选两台,挑连接数少的 | 动态扩展、可变连接生命周期 | 连接数是负载的合理代理 |
| HRW(Highest Random Weight) | 一致哈希,按客户端 IP 映射 | 缓存优化、有状态后端 | 客户端重复访问同一后端有收益 |
| Least-Time | 响应时间(TTFB)+ 活跃连接数 | 异构后端、延迟敏感 | 后端性能差异大且会变化 |
WRR:简单与可预测
WRR 是 Traefik 的默认策略,它的真正价值不是”公平”,而是可预测性。当你发送 300 个请求到三台同构服务器,每台处理约 100 个——这种确定性让容量规划和故障排查变得简单。
加权版本用于异构硬件:一台大机器配 weight=4,小机器配 weight=1,流量按 4:1 分配。但权重是静态配置,不会根据实时负载调整。所以当后端性能差异是动态变化的时候,WRR 就会失效。
P2C:动态连接的自动平衡
P2C 的算法极其简单:随机选两台服务器,比较活跃连接数,路由到较少的那台。但它解决了一个 WRR 无法处理的问题:连接生命周期高度可变。
典型场景是实时协作平台(如 Figma、Google Docs):
- 快速 API 调用:50-200ms,连接立即关闭
- 实时编辑会话:WebSocket 保持 30-60 分钟
- 文件操作:30-90 秒
WRR 会让某台服务器堆积大量长连接,而其他服务器 idle。P2C 通过比较活跃连接数,让新连接自然流向负载较轻的实例。
局限:P2C 只看连接数,不看处理时间。一台处理 10 个轻量请求的服务器,和一台处理 10 个重请求的服务器,在 P2C 眼里是一样的。
HRW:一致哈希与缓存亲和
HRW(Rendezvous hashing)用客户端 IP 计算哈希,确定性地把同一客户端映射到同一后端。当后端有本地缓存时,这能显著提高缓存命中率。
关键特性:当服务器增减时,只有约 1/N 的客户端需要重新映射(N 为服务器总数),而简单取模哈希会导致 100% 重新映射。这个特性对缓存预热成本高的系统至关重要。
风险:如果某个客户端产生 disproportionate 流量,其对应的后端会成为热点。HRW 优先考虑一致性而非负载均衡的完美性。
Least-Time:异构基础设施的自适应路由
Least-Time 是唯一同时考虑响应时间和活跃连接数的策略。它计算每台服务器的 score(基于近期 TTFB 和活跃连接),路由到 score 最低的服务器。
这个策略对混合实例类型的场景几乎是必需的:
- 高性能专用服务器:5ms 平均响应
- 标准云实例:15ms
- 可突发实例:10-50ms(取决于 CPU credits)
WRR 会让用户随机体验到 5ms、15ms 或 50ms;Least-Time 会自动把更多流量发给快的服务器,当慢服务器恢复时流量自然回流。结合权重还可以表达容量差异:weight=3 表示这台服务器在 score 变劣前可以承受 3 倍流量。
服务级策略的组合
Traefik 允许在服务级和服务器级同时使用不同策略:
- 服务级 WRR:金丝雀发布(95% v1 + 5% v2)、蓝绿部署、A/B 测试
- 镜像(Mirroring):复制 10% 流量到新版本做 shadow testing
- 故障转移(Failover):主集群故障时自动切到备份集群
最复杂的组合示例:服务级用 WRR 做金丝雀(90% v1 + 10% v2),每个版本内部再用 Least-Time 在服务器间做性能自适应路由。
实践启示
- 从 WRR 开始,按需演进。不要为还没出现的异构需求提前引入复杂度。Traefik 支持在线切换策略,没有停机时间。
- 选择策略时,根据技术需求而非公司规模。一个缓存重的产品从第一天就该用 HRW,而一个大规模但负载均匀的服务可能永远用 WRR。
- 连接生命周期是常被忽视的选型因素。如果你的应用混合了短 API 调用和长 WebSocket 连接,P2C 或 Least-Time 几乎是必须的。
来源信息
- 作者:Simon Delicata(Traefik Labs Senior Software Engineer)
- 发布日期:2026-02-06
- 原文:https://traefik.io/blog/choose-the-right-load-balancing-strategy
- 本地归档:
raw/articles/How to Choose the Right Load Balancing Strategy.md
相关页面
- load-balancing-strategies — 负载均衡策略的通用选择框架
- advanced-load-balancing-traefik — Traefik Proxy 的高级负载均衡特性(流量镜像、粘性会话、嵌套健康检查)
- what-is-envoy — Envoy 的高级负载均衡能力(重试、熔断、全局限流、异常检测)