引言
GSLB(Global Server Load Balancing,全局负载均衡)是大规模分布式系统的流量入口。当系统规模从百万 QPS 迈向千万 QPS 时,GSLB 的调度逻辑会发生本质性的转变——从单一的"就近接入"原则,演进为"容量感知"的多因子决策系统。
这不是简单的参数调优,而是调度范式的根本性变化。
一、百万 QPS:就近接入的黄金法则
在百万 QPS 场景下,GSLB 的核心逻辑相对直接:
基于地理位置的就近调度
- 根据用户 IP 判断地理位置
- 将请求导向物理距离最近的数据中心
- 同一 ISP 优先(减少跨网延迟)
这种模式下,调度决策的输入因子较少:
调度结果 = f(用户IP地理位置, 目标机房位置, ISP归属)
为什么这种模式在百万 QPS 下有效?
- 容量冗余充足:单机房容量通常按 2-3 倍峰值设计,很少触及容量上限
- 流量分布相对均匀:百万级用户的地理分布相对可预测
- 故障影响可控:单机房故障后,其他机房有足够余量承接
二、千万 QPS:就近调度的失效边界
当流量规模达到千万 QPS,"就近接入"开始暴露其局限性:
问题 1:热点区域的容量瓶颈
假设某视频平台在晚高峰时段,华东地区流量突增 40%。如果坚持就近调度,上海机房可能面临:
- CPU 利用率超过安全阈值
- 网络带宽接近物理上限
- 响应延迟显著上升
此时,将部分流量调度到杭州或南京机房,虽然增加了 5-10ms 的网络延迟,但整体用户体验反而更好。
问题 2:成本结构的复杂性
千万 QPS 场景下,带宽成本往往是最大的运营支出项。不同机房、不同 ISP、不同时段的带宽单价可能相差 2-3 倍。纯粹的就近调度可能导致:
- 高价带宽被打满,低价带宽闲置
- 月度带宽费用比最优方案高出 30% 以上
问题 3:ISP 互联质量的动态变化
跨 ISP 访问的质量并非静态不变。某些时段,电信用户访问联通机房的延迟可能比访问电信机房还低(取决于骨干网拥塞情况)。
三、多因子调度算法:从规则到决策
千万 QPS 的 GSLB 需要引入多因子调度算法,将调度决策从"规则匹配"升级为"实时决策":
调度结果 = f(地理位置, 实时容量, 带宽成本, ISP质量, 业务权重)
核心因子权重设计
| 因子 | 百万 QPS 权重 | 千万 QPS 权重 | 说明 |
|---|---|---|---|
| 地理距离 | 70% | 30% | 基础因子,但不再主导 |
| 实时容量 | 10% | 35% | 防止单点过载 |
| 带宽成本 | 5% | 20% | 成本优化核心 |
| ISP 质量 | 15% | 15% | 跨网访问质量 |
实时容量感知的实现
机房可调度权重 = 基础权重 × 容量系数
容量系数计算:
- 负载 < 60%:系数 = 1.0
- 负载 60%-80%:系数 = 0.7
- 负载 80%-90%:系数 = 0.3
- 负载 > 90%:系数 = 0(停止调入新流量)
这种设计确保了调度系统能够在机房接近满载前主动分流,而非等到故障发生后被动切换。
四、BGP Anycast 与 DNS 调度的配合
在千万 QPS 场景下,单纯依赖 DNS 调度存在固有局限:
- DNS 缓存导致调度生效延迟
- 无法做到请求级别的精细控制
因此,成熟的千万 QPS 架构通常采用 BGP Anycast + DNS 调度 的混合方案:
分工协作
| 调度层 | 技术方案 | 调度粒度 | 生效时间 |
|---|---|---|---|
| 粗粒度 | DNS 调度 | 区域级别 | 分钟级(受缓存影响) |
| 细粒度 | BGP Anycast | 请求级别 | 秒级 |
BGP Anycast 的容量感知
BGP Anycast 通过路由协议实现"天然的就近接入",但如何让它具备容量感知能力?
核心思路:根据机房负载动态调整 BGP 路由宣告
当机房负载超过阈值时:
1. 收缩该机房的 BGP 宣告范围(减少 Prepend 或撤回部分前缀)
2. 扩大相邻机房的 BGP 宣告范围
3. 流量自动通过路由层面重新分布
这种方案的优势在于:
- 对客户端完全透明
- 不依赖 DNS 缓存刷新
- 可以实现秒级的流量调度
五、调度决策的工程实践
决策链路设计
在千万 QPS 场景下,调度决策本身也需要高可用设计:
-
决策中心化 vs 分布式
- 百万 QPS:中心化决策器即可满足需求
- 千万 QPS:采用分布式决策 + 定期同步的模式,避免决策器成为瓶颈
-
数据采集频率
- 容量数据:5-10 秒采集一次
- 成本数据:小时级更新
- 质量数据:分钟级探测
-
决策平滑机制
- 避免流量剧烈震荡
- 设置单次调度的流量上限(如最多调走 20%)
- 引入调度冷却期
六、总结:调度范式的本质差异
| 维度 | 百万 QPS | 千万 QPS |
|---|---|---|
| 核心目标 | 最小化网络延迟 | 全局最优(性能 + 成本 + 稳定性) |
| 决策因子 | 地理位置为主 | 多因子加权 |
| 容量考量 | 被动应对(故障切换) | 主动感知(预防性调度) |
| 成本意识 | 较弱 | 强(带宽成本占比高) |
| 调度技术 | DNS 调度为主 | DNS + BGP Anycast 混合 |
| 决策架构 | 中心化 | 分布式 |
千万 QPS 的 GSLB 不再是一个简单的"路由表",而是一个需要持续运行的实时决策系统。它需要整合容量监控、成本核算、质量探测等多个子系统的数据,在毫秒级时间内做出全局最优的调度决策。
这种复杂性的增长,正是千万 QPS 不是百万 QPS 简单乘以 10 倍的又一个例证。