← 返回题目列表

数据 Rebalance 为什么要限速?

中等 第 26 / 27 题 更新于 2026/10/04
Rebalance限速扩缩容迁移
学习 AI 实战项目

简化版

Rebalance 会同时消耗源端读、目标端写、跨机架网络、CPU 和临时空间;不限速可能把一次扩容变成前台超时和副本掉线。应按节点、磁盘、链路和租户设置带宽/并发预算,并用前台 P99、队列深度和恢复紧迫度动态调节;安全修复优先于普通均衡。

详细版

迁移通常包含快照复制、增量追赶、校验、所有权切换和旧副本清理。任何阶段都可能与前台请求、Compaction 和备份争抢资源。

例如 10 TiB 数据以 500 MiB/s 理想需约 5.8 小时,但若磁盘稳定余量只有 150 MiB/s,强推 500 MiB/s 会增加排队并抬高 P99。使用 120 MiB/s 虽需约 24.3 小时,却可能让业务保持 SLO。

限速要多维:每源/目标节点并发数、单任务速率、机架出口总带宽、集群迁移字节和单租户配额。只限单流无法阻止大量任务叠加。

控制器根据 P99、错误率、磁盘队列、网络利用率和 backlog 调速;前台恶化立即降速,低峰期逐步加速。切流必须在数据追平和校验后完成。

完整版教学

一、Rebalance 为什么不是后台免费任务

源节点要读历史数据,目标节点要写盘并构建索引,网络要传输,随后还可能触发 Compaction。资源路径与正常读写高度重合,因此“后台线程”不代表没有前台影响。

snapshot copy -> catch up log -> checksum -> switch owner -> observe -> delete old

二、用数字理解资源预算

10 TiB 按 500 MiB/s 传输的理论时间约为 5.8 小时,按 120 MiB/s 则约 24.3 小时。前者恢复快但可能打满磁盘;后者暴露在降副本状态更久。速率选择是业务风险与资源风险的权衡。

任务紧迫度常见策略
故障后补足副本高较高额度但保护前台
扩容均衡中平滑限速
成本优化搬迁低低峰执行
下线危险设备高按失效风险加速

三、为何要分层限速

单任务 50 MB/s 看似安全,但 20 个任务会形成 1 GB/s。需要 per-task、per-node、per-disk、per-rack 和 cluster-wide 多层令牌桶。源和目标任一侧预算不足都应等待,避免把压力转嫁给较弱一方。

跨 AZ 还受出口成本和带宽约束。调度器应避免多个大任务同时穿过同一链路,并考虑副本放置,不能为限速而把副本临时放进同一故障域。

四、自适应控制怎么做

固定速率无法覆盖昼夜流量。控制器可每 10~30 秒观察前台 P99、错误率、磁盘队列和网络,稳定时小步增速,越过保护阈值时快速降速。这类似 AIMD,但必须设置上下限和冷却期。

反馈指标要选前台信号而非只看带宽。SSD 带宽未满时,随机 I/O 队列也可能已让 fsync P99 恶化。

五、迁移正确性不能被限速破坏

限速可能让迁移跨越数小时,期间源端仍有新写。系统需记录 snapshot 水位并持续追增量;目标追到切换水位、checksum 通过后,控制面提升 epoch。旧 owner 随后只转发或拒绝旧写。

任务暂停和重启要可续传,并验证已传块,不能每次从零开始。旧副本在观察窗结束前保留,提供回滚路径,但不能被当成新写 owner。

六、调度公平与雪崩防护

大租户不能永久占满迁移池,小分片也不能因大任务队头阻塞。可按租户加权公平,并为紧急 repair 保留专用额度。节点大面积故障时,恢复流量会进一步拖慢存活节点,必须限制并发、优先恢复到法定副本数。

监控迁移吞吐、backlog、ETA、暂停率、重试字节、前台 P99、磁盘队列、降副本时长和故障域违规。ETA 需要用近期有效吞吐计算,而不是文件大小除以配置上限。

记忆钩子:Rebalance 限速不是让迁移越慢越好,而是使用“前台没用完的资源”尽快完成安全迁移。

七、常见误区与追问

  • 误区:后台迁移不会影响线上请求。 它与前台共享磁盘、网络和 CPU。
  • 误区:限制单任务带宽就够了。 多任务叠加仍可打满节点和机架出口。
  • 误区:所有迁移优先级相同。 恢复副本安全通常高于普通均衡和成本优化。
  • 追问:前台流量突增怎么办? 快速降速或暂停低优先任务,保留状态后续续传。
  • 追问:限速后如何保证增量不丢? 记录快照水位并持续追日志,切流前验证追平。
  • 追问:ETA 为什么会不准? 实际吞吐受前台反馈、重试和 Compaction 影响,应动态估算。

八、加强记忆

Rebalance 是一条长期在线数据迁移:全量、增量、校验、切流、清理。限速要覆盖任务、节点、磁盘、链路和集群,并由前台 SLO 反馈调节;同时按安全紧迫度排优先级。快不是目标,在不压垮存活系统的前提下尽快恢复才是目标。