1. 容量规划中需求(demand)与供给(supply)如何匹配并动态调整资源供给?
在容量规划中,如何将业务需求(demand)与资源供给(supply)进行匹配,并通过动态调整资源供给来满足不断变化的需求?
- 需求侧预测与供给侧配置的建模能力
- 动态扩缩容机制的实现与触发条件
- 供需匹配的延迟、误差与兜底策略
供需匹配的核心是建立"需求预测与供给配置"的闭环:先通过历史监控、业务预测和发布计划汇总出未来一段时间的需求输入(QPS、并发、存储量等),再换算成所需资源(CPU、内存、带宽、实例数),最后让供给随需求动态调整。动态调整通常包含三个层次:一是基于阈值的自动扩缩容(HPA/KEDA、AWS Auto Scaling),在负载超过/低于阈值时按冷却时间伸缩实例;二是基于排程的容量供应(如 Karpenter、Cluster Autoscaler)按需调度新节点;三是人工/预留的基线容量兜底。为了降低伸缩滞后,常采用"预留一定安全水位 + 自动扩缩容响应突发"的组合,并利用预测式扩缩容(proactive scaling)提前拉高供给。
供给必须滞后于需求,因此一味地"精确匹配"并不现实,关键是控制匹配误差与响应延迟。过度匹配导致浪费,匹配不足导致 SLO 受损,所以需要安全水位作为缓冲,并且用监控告警尽早发现供给不足的趋势。
# 横向扩缩容基本原则:以需求指标驱动,设定安全水位与冷却时间
HPA_METRIC_CPU=70 # 目标 CPU 利用率
HEADROOM_PCT=30 # 安全水位缓冲
MIN_REPLICAS=5
MAX_REPLICAS=50
# 预测需求:QPS -> 实例数
estimated_qps=12000
capacity_per_pod=1500
replicas=$(( (estimated_qps / capacity_per_pod) * (100 + HEADROOM_PCT) / 100 ))
echo "建议副本数: $replicas (下限 $MIN_REPLICAS, 上限 $MAX_REPLICAS)"