4. 容量水位概念:容量、水位、利用率、饱和度等核心术语定义与度量单位

在容量规划与SLO复核中,术语的精确性是所有量化决策的基础。本章定义四个核心概念——容量、水位、利用率、饱和度,并给出它们的度量单位与换算关系。这些术语将贯穿后续所有容量水位SLO的设定与复核流程。

4.1 核心术语定义

术语 英文 定义 典型度量单位
容量 Capacity 系统、组件或资源在给定约束下能承载的最大工作负荷。容量是静态上限,由硬件规格、软件配置、架构设计共同决定。 QPS、RPS、并发连接数、存储GB/TB、内存GB、vCPU核数
水位 Watermark / Level 当前实际消耗量在容量刻度上的位置。水位是瞬时或窗口内的原始读数,不经过百分比归一化。 当前QPS、当前内存使用GB、当前磁盘已用GB
利用率 Utilization 水位与容量的比值,通常以百分比表示。利用率是归一化后的相对指标,用于跨不同规格资源的横向对比。 百分比(%),如 45.2%
饱和度 Saturation 资源已无法再接受额外负荷的程度,通常伴随排队、限流、丢包或错误率上升。饱和度是利用率超过某个阈值后的非线性恶化状态。 排队长度、请求等待时间ms、拒绝率%、错误率%
关键区分:利用率是连续线性指标,饱和度是非线性临界指标。利用率达到 80% 可能仍正常,但饱和度一旦触发,系统行为会急剧劣化。SLO 复核中,饱和度阈值通常比利用率阈值更严格。

4.2 四者关系与度量单位

四个概念构成一条完整的容量观测链:

  1. 容量是分母,是静态基准;
  2. 水位是分子,是动态读数;
  3. 利用率 = 水位 ÷ 容量 × 100%,是归一化后的百分比;
  4. 饱和度 = 利用率超过临界点后的衍生状态,用排队/错误等二次指标度量。

度量单位必须严格区分:

  • 容量单位:QPS(每秒查询数)、RPS(每秒请求数)、并发连接数、GB(存储/内存)、vCPU(计算)。
  • 水位单位:与容量单位一致,但表示当前值,如 3200 QPS、14.7 GB。
  • 利用率单位:固定为百分比(%),无其他单位。
  • 饱和度单位:ms(等待时间)、count(排队长度)、%(错误率/拒绝率)。
实践规则:在Backstage服务模板的catalog-info.yaml中,建议将容量声明为spec.capacity字段,水位通过Prometheus metric实时采集,利用率由SLO计算引擎自动归一化,饱和度则通过spec.saturationThresholds定义告警边界。

4.3 容量水位关系图

下图展示容量、水位、利用率、饱和度之间的层级关系与度量流向:

容量水位核心概念关系图 容量水位核心概念关系图 容量 (Capacity) 静态上限 · 分母 水位 (Watermark) 当前读数 · 分子 利用率 (Utilization) 水位 ÷ 容量 × 100% 饱和度 (Saturation) 非线性恶化 · 排队/错误 单位:QPS / GB / vCPU 静态声明 单位:与容量一致 实时采集 单位:百分比 % 归一化对比 单位:ms / count / % 告警触发

4.4 典型资源维度的度量对照

资源维度 容量单位 水位单位 利用率公式 饱和度信号
CPU vCPU 核数 使用中的 vCPU 核数 使用核数 ÷ 总核数 × 100% CPU 排队长度 > 2×vCPU 核数
内存 GB 已用 GB 已用 GB ÷ 总 GB × 100% OOM Killer 触发 / Swap 使用率 > 0
磁盘 GB / TB 已用 GB / TB 已用 ÷ 总容量 × 100% IO 等待时间 > 100ms / 磁盘队列深度 > 磁盘数×2
网络带宽 Mbps / Gbps 当前吞吐量 Mbps 当前吞吐 ÷ 链路带宽 × 100% 丢包率 > 0.1% / TCP 重传率 > 2%
应用层请求 QPS / RPS 当前 QPS / RPS 当前 QPS ÷ 容量 QPS × 100% P99 延迟 > 500ms / HTTP 503 比例 > 1%
数据库连接池 最大连接数 活跃连接数 活跃连接 ÷ 最大连接 × 100% 连接等待超时 > 1s / 连接拒绝

4.5 利用率与饱和度的非线性关系

利用率与饱和度并非线性对应。当利用率低于某个阈值时,系统处于线性区;超过阈值后进入饱和区,响应时间、错误率等指标会指数级上升。这个阈值通常称为拐点或临界利用率。

利用率与饱和度非线性关系曲线 利用率 vs 饱和度 — 非线性拐点示意 利用率 (%) 0% 25% 50% 75% 100% 0 中 高 饱和度 拐点 线性区 饱和区 典型拐点范围:CPU 65-75% · 内存 80-85% · 磁盘 IO 70-80% · 网络带宽 60-70%
常见误区:不要将利用率与饱和度混为一谈。利用率 90% 的 CPU 可能仍在线性区(取决于 workload 类型),而利用率 60% 的磁盘 IO 可能已经饱和(因为 IO 队列深度已满)。SLO 复核必须同时检查利用率和饱和度两个维度。

4.6 Backstage 服务模板中的术语映射

在 Backstage 的 Service Template 中,这些术语通过以下字段映射到实际配置:

Backstage 字段 对应术语 示例值
spec.capacity.maxQps 容量 10000
spec.capacity.maxMemory 容量 "8Gi"
status.currentQps 水位 3200
status.utilization 利用率 0.32 (即 32%)
spec.slo.saturationThreshold 饱和度阈值 {"p99LatencyMs": 500, "errorRate": 0.01}
# Backstage catalog-info.yaml 示例片段
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: my-service
spec:
  type: service
  capacity:
    maxQps: 10000
    maxMemory: "8Gi"
    maxConnections: 500
  slo:
    utilizationTarget: 0.70
    saturationThresholds:
      p99LatencyMs: 500
      errorRate: 0.01
      queueDepth: 10
术语统一:在团队内部和 Backstage 模板中,建议统一使用 capacity、watermark、utilization、saturation 四个英文术语,避免中文翻译歧义。所有 SLO 复核文档、告警规则、Dashboard 面板都应保持术语一致。