平滑加权轮询Smooth weighted round robin
逐轮累加候选权重,选最高分者并扣除总权重,使份额交错分配。
- 核心约束
- 在稳定候选与权重下,用累计得分追踪每个节点尚应获得的服务份额。
- 适用问题
- 有不同承载权重的上游服务与请求分配。
- 边界与取舍
- 按请求数分配不等于按执行成本均衡;故障、重试和动态有效权重会改变结果。
时间与空间#
n 为候选上游节点数;针对 nginx 1.26.3 的逐节点选择。
- 时间复杂度
- 一次选择
- 辅助空间
- ,为各节点保存权重与运行状态
给可用节点累加 effective_weight,选择 current_weight 最大者并扣总权重。失败次数、连接上限、备用组和重试会影响候选集合;这不是按请求耗时自动达成的负载均衡保证。
工程中的应用#
1 个案例 · 附源码nginx 按有效权重累加候选节点的得分,选中最高分节点后减去总权重,让请求按权重交错分配。
附源码片段 · 通信与流量
基础原理参考资料
nginx 1.26.3 · ngx_http_upstream_get_peer权重累加、最大值选择和 total 扣减的完整循环。