2. 服务目录基础:服务目录的定义、核心组件、服务目录在SRE中的角色

服务目录是SRE体系中的“单一可信源”,它将组织内所有服务的元数据、所有权、依赖关系以及可靠性目标进行结构化建模。没有服务目录,SLO的制定、SLI的采集以及故障响应都会陷入混乱。本节将定义服务目录的核心概念,拆解其关键组件,并阐明它在SRE工作流中的战略位置。

2.1 服务目录的定义

服务目录是一个动态的、可查询的注册表,用于记录每个服务的属性、负责人、依赖关系以及可靠性承诺。它不同于传统的CMDB(配置管理数据库),因为服务目录更侧重于服务的行为特征(如SLO、SLI)而非单纯的硬件或软件配置。

核心定义: 服务目录 = 服务元数据 + 所有权信息 + 可靠性目标(SLO)+ 度量方式(SLI)+ 依赖拓扑。

一个成熟的服务目录通常包含以下关键字段:

字段类别 示例字段 说明
标识信息 服务名称、服务ID、版本号 唯一标识一个服务实例
所有权 团队名称、值班联系人、On-Call 轮转组 明确故障响应和变更审批的责任人
可靠性目标 SLO 定义、SLI 指标、错误预算 服务的可靠性承诺与度量方式
依赖关系 上游依赖、下游消费者、基础设施层 用于故障影响分析和变更风险评估
运行时属性 部署环境、集群名称、关键端口 辅助自动化运维和监控配置

2.2 核心组件:服务、SLO、SLI

服务目录的核心组件可以归纳为三个层次:服务(实体)、SLI(度量)、SLO(目标)。三者之间的关系可以用“服务产生数据,SLI量化数据,SLO定义阈值”来概括。

2.2.1 服务(Service)

服务是目录中的基本单元。它可以是微服务、单体应用、基础设施组件(如数据库、负载均衡器)或外部依赖。每个服务在目录中都有一个唯一的条目,并关联其所有属性。

2.2.2 服务等级指标(SLI)

SLI 是服务可靠性的具体度量指标。常见的 SLI 包括请求延迟(Latency)、错误率(Error Rate)、吞吐量(Throughput)和可用性(Availability)。SLI 必须可量化、可采集,并且与用户体验直接相关。

2.2.3 服务等级目标(SLO)

SLO 是 SLI 的目标阈值,例如“99.9% 的请求延迟低于 200ms”。SLO 定义了服务“足够好”的标准,是错误预算计算的基础。SLO 通常以时间窗口(如过去30天)内的达标率来表示。

实践建议: 在服务目录中,每个服务至少应定义 1-2 个核心 SLO。过多的 SLO 会导致监控疲劳和错误预算碎片化。优先选择与用户最直接交互的指标(如首页加载延迟、登录成功率)。
服务目录核心组件关系图 服务 (Service) 实体 / 微服务 / 组件 SLI (指标) 延迟 / 错误率 / 吞吐量 SLO (目标) 99.9% / 200ms 阈值 产生数据 设定阈值 三者协同工作流 服务产生原始数据 → SLI 量化成可比较的指标 → SLO 定义可接受的阈值 SLO 达标情况驱动错误预算计算,进而影响发布节奏和故障优先级

2.3 服务目录在SRE中的角色

服务目录不是静态的文档,而是SRE日常操作的“控制平面”。它在以下几个关键场景中发挥不可替代的作用:

  1. 故障响应与On-Call: 当告警触发时,值班工程师通过服务目录快速定位服务负责人、依赖关系和运行环境,缩短MTTR(平均修复时间)。
  2. 变更风险管理: 在发布或配置变更前,服务目录提供依赖拓扑,帮助评估变更的影响范围,避免“牵一发而动全身”。
  3. SLO治理与错误预算: 服务目录是SLO定义的存储库,也是错误预算消耗的审计源。团队可以基于目录数据定期评审SLO是否合理。
  4. 容量规划与成本优化: 通过服务目录中的SLI历史数据,可以分析资源使用趋势,辅助容量规划和成本控制。
  5. 合规与审计: 服务目录记录服务的所有权和SLO历史,满足内部合规和外部审计对服务可靠性的追溯要求。
常见误区: 不要将服务目录做成“一次性录入”的静态表格。服务目录必须与CI/CD流水线、监控系统、告警平台实时同步。任何手动维护的目录都会在两周内变得不可信。
服务目录在SRE工作流中的角色 服务目录 单一可信源 故障响应 定位负责人/依赖 变更管理 影响范围评估 SLO治理 错误预算审计 容量规划 资源趋势分析 服务目录是SRE所有可靠性活动的数据中枢

2.4 服务目录与CI/CD流水线的集成点

在后续章节中,我们将深入探讨如何将服务目录与CI/CD流水线集成。这里先列出关键的集成点,作为后续内容的铺垫:

流水线阶段 服务目录交互 价值
代码提交 验证服务目录中是否存在该服务,自动注册新服务 防止“幽灵服务”上线
构建与测试 读取服务的SLO阈值,生成测试用例的通过标准 确保测试覆盖可靠性目标
部署 检查错误预算是否充足,决定是否允许发布 实现“错误预算门禁”
监控与告警 自动配置SLI采集规则和告警路由 减少人工配置错误
关键原则: 服务目录应作为流水线的“配置源”,而不是流水线的“输出物”。流水线从目录中读取配置,而不是向目录写入临时状态。这样可以保持目录的稳定性和权威性。