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 节将围绕一条主线展开:先建立度量与目标,再治理变更与升级,最后用演练和复盘形成闭环。具体路线可以概括为四个阶段:
- 度量与目标阶段:定义 SLI、设定 SLO、建立错误预算和告警策略,让可靠性可观测、可判断。
- 变更与升级阶段:把发布、配置变更、集群升级、组件升级纳入统一门禁,控制爆炸半径。
- 容量与弹性阶段:基于真实负载和 SLO 做容量规划、HPA/VPA、节点池与故障域设计。
- 演练与复盘阶段:通过混沌工程、故障注入、事故复盘和改进行动,把一次故障转化为系统能力。
下面这张图把本节的核心关系压缩成一张可复查的认知地图:左侧是 SLI/SLO/SLA 的度量链路,右侧是治理边界与课程路线,中间用错误预算连接“度量”与“行动”。
这张图想强调一个判断顺序:先有可信的 SLI,才有可执行的 SLO;先有 SLO,才有错误预算;先有错误预算,变更和升级才有“该不该放行”的依据。如果跳过度量直接谈治理,最后往往退化成“凭经验拍板”和“出事再救火”。
本节需要带走的最小认知:可靠性不是“永不故障”,而是“在明确窗口、明确负载、明确服务质量下,系统持续可用的概率”。SLO 是工程目标,SLA 是商业承诺,错误预算是两者之间的调节器。治理的边界是“让变化可控”,而不是“消灭所有变化”。