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 四者关系与度量单位
四个概念构成一条完整的容量观测链:
- 容量是分母,是静态基准;
- 水位是分子,是动态读数;
- 利用率 = 水位 ÷ 容量 × 100%,是归一化后的百分比;
- 饱和度 = 利用率超过临界点后的衍生状态,用排队/错误等二次指标度量。
度量单位必须严格区分:
- 容量单位:QPS(每秒查询数)、RPS(每秒请求数)、并发连接数、GB(存储/内存)、vCPU(计算)。
- 水位单位:与容量单位一致,但表示当前值,如 3200 QPS、14.7 GB。
- 利用率单位:固定为百分比(%),无其他单位。
- 饱和度单位:ms(等待时间)、count(排队长度)、%(错误率/拒绝率)。
实践规则:在Backstage服务模板的catalog-info.yaml中,建议将容量声明为
spec.capacity字段,水位通过Prometheus metric实时采集,利用率由SLO计算引擎自动归一化,饱和度则通过spec.saturationThresholds定义告警边界。
4.3 容量水位关系图
下图展示容量、水位、利用率、饱和度之间的层级关系与度量流向:
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 利用率与饱和度的非线性关系
利用率与饱和度并非线性对应。当利用率低于某个阈值时,系统处于线性区;超过阈值后进入饱和区,响应时间、错误率等指标会指数级上升。这个阈值通常称为拐点或临界利用率。
常见误区:不要将利用率与饱和度混为一谈。利用率 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 面板都应保持术语一致。