1. 课程导入与可靠性认知

在云原生平台的生产实践中,“可靠性”经常被简化成一句口号:系统不要挂。但真正进入大规模容器集群、微服务调用链、多租户控制面和持续交付流水线之后,我们会发现可靠性并不是一个二元状态,而是一组可以被定义、被度量、被交易、被治理的工程属性。本课程的第一节,先把三个最容易被混用的概念摆正:可靠性、SLO/SLI/SLA,以及可靠性治理的边界。只有边界清楚,后面的升级、变更、容量、故障演练和复盘才有共同的判断基准。

一、云原生平台可靠性的定义

云原生平台的可靠性,可以定义为:在给定的时间窗口和负载条件下,平台及其承载的业务能够持续提供可接受服务质量的能力。这个定义里有四个不可省略的限定词。

  • 时间窗口:可靠性永远相对于一个统计周期,例如 28 天、30 天或一个季度。脱离窗口谈“99.99%”没有意义。
  • 负载条件:平台在 100 QPS 和 10 万 QPS 下的可靠性不是同一件事,必须说明容量假设。
  • 可接受的服务质量:由业务和用户共同定义,而不是由运维单方面宣布。
  • 持续提供:强调的不是“某一次恢复成功”,而是长期稳定输出的概率。

在云原生语境下,可靠性还多了一层特殊性:平台本身是“平台的平台”。Kubernetes 控制面、Ingress、服务网格、镜像仓库、CI/CD、可观测性组件,任何一层抖动都会放大成上层业务的不可用。因此,云原生可靠性治理的对象不是单个 Pod,而是控制面、数据面、交付链路和依赖链路共同构成的系统。

二、SLO、SLI、SLA 的关系

这三个缩写的字母顺序容易让人误以为它们是并列关系,实际上它们是一条从“度量”到“目标”再到“承诺”的链路。

SLI(Service Level Indicator,服务等级指标)是实际测量出来的数值,例如“过去 5 分钟内 HTTP 200 响应占比”“P99 延迟”“消息投递成功率”。SLI 必须来自真实可观测数据,不能靠估算。一个合格的 SLI 通常写成“好事件数 / 总事件数”的形式,例如:

可用性 SLI = 成功请求数 / 总请求数
延迟 SLI   = 在 300ms 内完成的请求数 / 总请求数

SLO(Service Level Objective,服务等级目标)是团队为 SLI 设定的内部目标,例如“28 天滚动窗口内可用性 SLI ≥ 99.9%”。SLO 是工程团队自己的承诺线,用来驱动告警、发布门禁和容量决策。它通常比对外承诺更严格,留出缓冲。

SLA(Service Level Agreement,服务等级协议)是对外或对内的正式协议,带有违约后果,例如赔偿、信用扣减或工单升级。SLA 的数值一般低于 SLO,因为它是商业承诺,不是工程目标。

一句话记忆:SLI 是温度计,SLO 是空调设定温度,SLA 是与房东签的合同温度。温度计读数不准,后面两个都失去意义。

三者之间还存在一个关键量:错误预算(Error Budget)。如果 SLO 是 99.9%,那么 28 天窗口内允许的不可用时间约为 40 分钟。错误预算就是“可以失败多少”的额度。它把可靠性从“越高越好”变成“在预算内可交易”:预算充足时可以加快发布,预算耗尽时必须冻结变更、优先修复稳定性。

三、可靠性治理的边界

可靠性治理不是把所有问题都归到运维头上。它的边界应当清晰:

  • 属于治理范围:SLO 定义与评审、错误预算策略、变更与发布门禁、容量与弹性、故障演练、可观测性覆盖、事故复盘与改进项闭环。
  • 不属于治理范围:业务逻辑正确性、产品功能取舍、单个代码缺陷的修复本身。这些是研发和产品的职责,但它们的变更过程要接受可靠性门禁约束。
  • 边界模糊地带:第三方云服务、CDN、DNS 等外部依赖。治理方式不是“保证它不出问题”,而是“量化它的影响、准备降级路径、明确责任分界”。

换句话说,可靠性治理管的是“系统在面对变化时,是否仍然可控”,而不是“系统永远不变”。

四、课程整体实践路线

本课程后续 29 节将围绕一条主线展开:先建立度量与目标,再治理变更与升级,最后用演练和复盘形成闭环。具体路线可以概括为四个阶段:

  1. 度量与目标阶段:定义 SLI、设定 SLO、建立错误预算和告警策略,让可靠性可观测、可判断。
  2. 变更与升级阶段:把发布、配置变更、集群升级、组件升级纳入统一门禁,控制爆炸半径。
  3. 容量与弹性阶段:基于真实负载和 SLO 做容量规划、HPA/VPA、节点池与故障域设计。
  4. 演练与复盘阶段:通过混沌工程、故障注入、事故复盘和改进行动,把一次故障转化为系统能力。

下面这张图把本节的核心关系压缩成一张可复查的认知地图:左侧是 SLI/SLO/SLA 的度量链路,右侧是治理边界与课程路线,中间用错误预算连接“度量”与“行动”。

云原生平台可靠性认知地图 度量链路 · 错误预算 · 治理边界 · 课程路线 度量与承诺链路 SLI 指标 成功请求 / 总请求 · P99 延迟 SLO 目标 28 天窗口 ≥ 99.9% SLA 协议 对外承诺 · 违约后果 错误预算 Error Budget 99.9% SLO → 28 天 约 40 分钟不可用额度 预算充足 → 可发布 预算耗尽 → 冻结变更 治理边界与课程路线 ① 度量与目标 SLI / SLO / 告警策略 ② 变更与升级 发布门禁 · 爆炸半径控制 ③ 容量与弹性 HPA / 节点池 / 故障域 ④ 演练与复盘 混沌工程 · 改进闭环 治理范围:SLO 评审 · 错误预算 · 变更门禁 · 容量弹性 · 演练复盘 | 非治理范围:业务逻辑正确性 · 单点代码缺陷修复

这张图想强调一个判断顺序:先有可信的 SLI,才有可执行的 SLO;先有 SLO,才有错误预算;先有错误预算,变更和升级才有“该不该放行”的依据。如果跳过度量直接谈治理,最后往往退化成“凭经验拍板”和“出事再救火”。

本节需要带走的最小认知:可靠性不是“永不故障”,而是“在明确窗口、明确负载、明确服务质量下,系统持续可用的概率”。SLO 是工程目标,SLA 是商业承诺,错误预算是两者之间的调节器。治理的边界是“让变化可控”,而不是“消灭所有变化”。