3. 容量规划基础:容量规划的目标、关键指标与规划周期
在镜像供应链安全体系中,容量规划是确保镜像仓库、分发网络及安全扫描服务能够稳定、高效运行的前提。缺乏容量规划,将直接导致拉取超时、扫描积压、存储溢出等连锁故障,最终影响交付流水线的可靠性。本节将系统阐述容量规划的核心目标、关键量化指标以及科学的规划周期。
3.1 容量规划的核心目标
镜像供应链的容量规划并非简单的“扩容”,而是围绕以下三个核心目标展开的持续优化过程:
- 保障服务可用性:确保在任何负载峰值下,镜像拉取、推送、扫描等核心 API 的响应时间与成功率维持在 SLO 范围内。
- 优化资源成本:避免过度预配导致的资源闲置,同时防止因容量不足引发的业务中断成本。
- 支撑业务增长:为微服务数量增长、CI/CD 频率提升、多集群部署等业务扩展提供可预测的容量支撑。
安全视角:容量不足时,安全扫描服务可能因资源竞争而延迟或跳过关键镜像层扫描,形成供应链安全盲区。因此,容量规划是安全水位巡检的基础。
3.2 关键容量指标
容量规划需要量化的指标可分为四大类:存储、带宽、API 请求数与并发拉取。下表列出了每类指标的核心监控项与典型阈值参考:
| 指标类别 | 核心监控项 | 单位 | 典型安全水位阈值 | 说明 |
|---|---|---|---|---|
| 存储 | 镜像仓库总占用 | TiB / PiB | ≤ 总容量的 70% | 超过 70% 后 GC 效率下降,写入延迟增加 |
| 每日增量数据 | GiB / 天 | ≤ 预留日增长容量的 80% | 用于预测存储扩容窗口 | |
| 带宽 | 出站峰值带宽 | Gbps | ≤ 链路容量的 60% | 超过 60% 时 TCP 重传率显著上升 |
| 入站峰值带宽 | Gbps | ≤ 链路容量的 70% | 推送流量通常低于拉取流量 | |
| API 请求数 | GET /v2/*/manifests 请求速率 | req/s | ≤ 后端服务限流的 50% | manifest 请求是拉取流程的瓶颈点 |
| POST /v2/*/blobs/uploads 请求速率 | req/s | ≤ 后端服务限流的 40% | 推送请求对存储写入压力更大 | |
| 并发拉取 | 活跃拉取连接数 | 连接数 | ≤ 连接池上限的 70% | 超过 70% 时新建连接排队时间激增 |
| 拉取队列深度 | 请求数 | ≤ 队列最大深度的 60% | 队列深度超过 60% 时超时风险急剧升高 |
基线验证要点:上述阈值并非固定值,需结合历史峰值、业务增长曲线以及安全扫描的额外资源消耗进行动态调整。例如,大规模漏洞库更新时,扫描服务的 CPU 与内存消耗会额外占用 15%-25% 的节点资源。
3.3 规划周期与滚动调整策略
容量规划不应是一次性的静态活动,而应遵循“长期趋势 + 短期波动”的滚动周期模型。下图展示了典型的容量规划周期与各阶段的关键动作:
基于上述模型,建议采用以下三种时间尺度的规划周期:
- 长期规划(季度/半年度):基于业务增长曲线(如微服务数量、CI/CD 触发频率、镜像平均大小),预测未来 3-6 个月的存储与带宽需求,制定扩容预算与架构升级计划。
- 中期规划(月度):分析过去 30 天的峰值指标,调整安全水位阈值与预警线。例如,若连续两周存储使用率超过 65%,则应将预警线下调至 60%,提前触发扩容流程。
- 短期规划(周度):结合本周的发布计划与已知大版本更新,评估并发拉取峰值是否可能突破当前连接池上限,必要时提前申请临时资源或实施拉取限流。
常见陷阱:仅依赖“平均负载”进行规划。镜像仓库的负载具有明显的“脉冲”特征——例如每日凌晨的 CI/CD 高峰、每周二的漏洞库更新。容量规划必须基于 P95/P99 分位值,而非平均值。
3.4 基线验证与容量水位的关系
容量规划的输出并非一份静态的“扩容计划”,而是形成可量化的容量基线。该基线将作为后续章节“安全水位巡检”的比对基准。基线通常包含以下要素:
- 正常水位区间:各指标在无异常负载下的典型波动范围(如存储使用率 45%-55%)。
- 预警水位线:触发扩容流程的阈值(如存储使用率 ≥ 65%)。
- 紧急水位线:触发自动限流或熔断的阈值(如存储使用率 ≥ 80%)。
- 安全扫描资源预留:为扫描服务预留的 CPU、内存与 I/O 带宽比例(通常为总资源的 15%-20%)。