1. 课程导论:服务画像变更检测与SLI重算的背景、目标与整体流程
1.1 背景:为什么需要服务画像变更检测?
在微服务与云原生架构下,服务拓扑、依赖关系、实例规格、流量特征等属性频繁变化。传统SRE实践中,SLI(Service Level Indicator)口径通常由人工定义并静态配置,一旦服务画像发生变更,静态口径将导致以下问题:
- SLI失真:新增下游依赖未纳入可用性计算,导致SLI虚高。
- 告警风暴:实例扩缩容后,基于固定阈值的错误率检测产生大量误报。
- 归因困难:变更前后口径不一致,故障定位时无法对齐基线。
核心矛盾:服务画像的动态性与SLI口径的静态性之间的鸿沟,是导致可观测性数据质量下降的根本原因。
1.2 目标:变更检测触发SLI口径自动重算
本课程旨在构建一套自动化机制,实现以下三个核心目标:
| 目标维度 | 具体描述 | 关键指标 |
|---|---|---|
| 实时感知 | 持续监听服务注册中心、配置中心、容器编排平台,捕获服务画像变更事件 | 变更检测延迟 < 30s |
| 智能重算 | 根据变更类型(拓扑、实例、流量)自动调整SLI口径与聚合规则 | 口径重算成功率 > 99.5% |
| 闭环验证 | 重算后自动执行口径一致性校验,确保新旧口径数据可追溯 | 口径偏差率 < 0.1% |
1.3 整体流程:从变更感知到口径生效
下图展示了变更检测触发SLI重算的完整闭环流程,包含5个核心阶段:
1.4 变更类型与SLI口径映射关系
不同变更类型对应不同的SLI重算策略,下表总结了常见的变更场景及其影响:
| 变更类型 | 典型场景 | SLI口径调整策略 | 重算优先级 |
|---|---|---|---|
| 拓扑变更 | 新增/移除下游依赖 | 重新计算依赖链可用性,调整错误预算分配 | P0 |
| 实例变更 | Pod扩缩容、实例替换 | 更新聚合粒度,按新实例数重算平均延迟/错误率 | P1 |
| 流量变更 | 路由规则调整、流量比例变化 | 按新流量权重重新分配SLI采样比例 | P1 |
| 配置变更 | 超时时间、重试策略修改 | 调整SLI阈值与窗口大小,避免因配置变化导致误告 | P2 |
实践建议:在初始阶段,建议优先覆盖拓扑变更和实例变更(P0/P1),这两类变更对SLI准确性的影响最大,且变更频率相对可控。
1.5 课程知识体系结构
本课程共30章,按知识递进关系分为四个模块。下图展示了模块间的依赖关系:
1.6 前置知识与环境要求
为获得最佳学习效果,建议读者具备以下基础:
- SRE基础:理解SLI/SLO/SLA概念,熟悉错误预算与燃烧率。
- 可观测性工具:至少使用过Prometheus、Grafana、ELK或OpenTelemetry中的一种。
- 编程能力:能阅读Python/Go代码,了解REST API与事件驱动架构。
- 容器与Kubernetes:了解Pod、Service、Deployment等基本资源对象。
注意:本课程不涉及基础语法教学。如果对上述前置知识不熟悉,建议先完成相关基础课程再进入本课程学习。