首页/云/云网络与负载均衡速查/负载均衡调度算法怎么选
负载均衡54 条

负载均衡调度算法怎么选

常见调度算法有加权轮询、加权最小连接数与一致性哈希:请求均匀且处理时长相近用轮询;后端处理耗时差异大用最小连接;需要把同一客户端固定到同一后端时用一致性哈希。

调度算法怎么选

常见调度算法有三类:加权轮询按权重轮流分配,适合请求均匀、处理时长相近的服务;加权最小连接数把新连接交给当前连接数最少的后端,适合处理耗时差异大的服务;一致性哈希按客户端地址或指定键固定映射,适合缓存亲和与有状态服务。选错算法的典型症状是「后端配置相同但负载明显不均」。

基本信息

加权轮询 wrr按权重轮流分配,最常用的默认选择
加权最小连接数 wlc按当前连接数分配,需产品支持该算法
一致性哈希按源 IP 等键固定映射,成员变化会引发部分键重映射
与健康检查关系不健康成员直接退出分配,权重不再生效
生效粒度通常只影响新连接,存量连接不重新分配
会话粘性区别会话保持按会话或连接,一致性哈希按客户端地址

典型使用场景

  • 同质后端、请求时长接近:加权轮询是最稳妥的默认选择
  • 部分请求耗时长(报表、导出):最小连接数能避免个别后端堆积
  • 有本地缓存的后端集群:一致性哈希提升缓存命中率
  • 按机器规格分配流量:用权重体现配置差异
  • 长连接协议或推送服务:结合会话保持与连接数观察效果

查看与调整调度算法

查看与调整调度算法
# 阿里云:修改四层监听调度算法
aliyun slb SetLoadBalancerTCPListenerAttribute \
  --RegionId cn-hangzhou --LoadBalancerId lb-xxxxxxxx \
  --ListenerPort 80 --Scheduler wlc
# 调整后观察各后端的连接数分布是否趋于均匀
ss -s          # 在后端实例上查看连接汇总,确认是否出现明显倾斜

算法对照

算法适用场景注意
加权轮询 wrr同类服务、请求均匀最常用的默认选择
加权最小连接 wlc请求处理时长差异大需要产品支持该算法
一致性哈希(源 IP)缓存亲和、有状态服务成员变化引发部分键重映射
会话保持需要固定到同一后端与调度算法叠加使用,注意语义差异
会话保持与一致性哈希都能实现粘性:前者按会话或连接粒度,后者按客户端地址粒度,业务语义不同,选择前先想清楚「粘性应该跟谁绑定」。
后端负载不均时先看长连接分布:即使算法是轮询,长连接一旦建立就不会重新分配,连接数倾斜会被长期保持。

易错点

  • 扩缩容频繁的缓存集群使用一致性哈希,成员变化导致大量键重映射,缓存命中率骤降
  • 只看平均负载判断均匀性,忽略长连接造成的连接数倾斜,实际问题被平均值掩盖
  • 把会话保持与一致性哈希叠加使用,粘性来源不清,排查流量分布时无从下手
  • 按权重期望精确比例,忽略不健康成员不参与分配,实际比例与估算差距明显

数据来源与参考

  • 阿里云 CLB 调度算法文档
  • 腾讯云 CLB 调度算法说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌