1. 课程导论:多租户架构概述、故障域隔离概念、容量突增场景定义、Grafana水位预测的价值
1.1 多租户架构概述
多租户(Multi-Tenancy)是一种软件架构模式,允许单个软件实例同时服务多个独立的租户(Tenant)。每个租户在逻辑上相互隔离,拥有专属的数据、配置和资源视图,但共享底层基础设施。
| 维度 | 单租户架构 | 多租户架构 |
|---|---|---|
| 资源利用率 | 低,每个租户独占实例 | 高,共享实例提升密度 |
| 运维成本 | 线性增长,每租户独立部署 | 亚线性增长,统一管控 |
| 隔离粒度 | 物理/虚拟机级强隔离 | 进程/容器/命名空间级逻辑隔离 |
| 故障半径 | 单租户故障不影响其他 | 需精心设计故障域,防止“吵闹邻居” |
关键认知:多租户不是简单的“共享”,而是在共享中实现可控的隔离。SRE 的核心挑战在于:如何在资源复用带来的效率提升与故障隔离带来的稳定性保障之间取得平衡。
1.2 故障域隔离概念
故障域(Failure Domain)是指系统中一旦发生故障,会共同受影响的一组资源或组件。在多租户场景下,故障域隔离的目标是:一个租户的故障(或容量突增)不应级联扩散到其他租户。
- 物理故障域:机架、电源域、网络交换机、数据中心可用区(AZ)。
- 逻辑故障域:Kubernetes 命名空间、服务网格分区、数据库分片、消息队列 Topic 分区。
- 容量故障域:共享资源池中的 CPU/内存/IOPS 配额、限流阈值、连接池大小。
常见误区:很多团队只关注物理故障域(如跨 AZ 部署),却忽略了逻辑故障域和容量故障域。当某个“大租户”在促销活动期间流量突增 10 倍时,如果缺乏容量隔离机制,共享的 Redis 集群、数据库连接池或 API 网关可能被瞬间打满,导致所有租户集体降级。
1.3 容量突增场景定义
容量突增(Capacity Spike)是指在极短时间内,系统负载指标(如 QPS、CPU 使用率、内存占用、网络吞吐)出现远超基线的剧烈增长。在多租户环境中,突增通常由以下原因触发:
- 计划内突增:大促活动、秒杀、版本发布、数据回刷。
- 计划外突增:DDoS 攻击、爬虫流量、上游服务故障导致的重试风暴、配置错误导致的流量调度异常。
| 突增类型 | 典型倍数 | 持续时间 | 对故障域的影响 |
|---|---|---|---|
| 日常波动 | 1.5x – 3x | 分钟级 | 通常可被弹性伸缩吸收 |
| 大促突增 | 5x – 20x | 小时级 | 可能突破共享资源池上限,触发跨租户干扰 |
| 故障级突增 | 10x – 50x+ | 持续至故障恢复 | 极易导致故障域边界被击穿,引发级联故障 |
演练核心命题:在故障域隔离演练中,我们需要模拟某个租户的容量突增,观察隔离边界是否被突破,并验证监控系统能否提前预警而非事后告警。
1.4 Grafana 水位预测的价值
传统监控是反应式的:指标超过阈值 → 触发告警 → 人工介入。在容量突增场景下,这种模式存在致命缺陷:
- 滞后性:告警触发时,故障可能已经发生。
- 缺乏趋势:无法判断当前水位是“正常波动”还是“即将击穿”的前兆。
- 跨域盲区:单指标告警无法关联故障域内多个资源的协同状态。
Grafana 水位预测(Watermark Prediction)通过时间序列预测算法(如 Holt-Winters、Prophet、LSTM 或基于 Prometheus 的预测函数 predict_linear),对关键水位指标进行前瞻性估算,回答三个核心问题:
- 当前水位:现在是多少?
- 未来水位:如果保持当前趋势,N 分钟后会达到多少?
- 击穿时间:预计何时会突破故障域隔离的容量上限?
1.5 课程核心脉络
本课程将围绕以下主线展开:
- 理论篇:多租户故障域隔离的设计原则与容量模型。
- 实践篇:基于 Grafana + Prometheus 搭建水位预测看板,集成
predict_linear与自定义预测算子。 - 演练篇:设计容量突增演练剧本,在隔离环境中验证预测准确性,并调整故障域边界。
- 优化篇:根据演练结果优化弹性伸缩策略、限流阈值和资源配额。
学习目标:学完本章后,你将能够独立设计一套“容量突增场景下的 Grafana 水位预测看板”,并将其嵌入到故障域隔离演练的标准化流程中,实现从“被动救火”到“主动防御”的 SRE 能力升级。