跳到主要内容

SLA/SLO/SLI 设计

核心概念

术语全称含义示例
SLIService Level Indicator服务质量指标请求成功率、P99 延迟
SLOService Level Objective服务质量目标成功率 >= 99.9%
SLAService Level Agreement服务质量协议SLO + 违约赔偿条款
SLI(度量) → SLO(目标) → SLA(协议)

SLI 选择

服务类型关键 SLI
API 服务可用性(成功率)、延迟(P50/P99)
存储服务持久性、可用性、延迟
数据管道新鲜度(数据延迟)、正确性
批处理完成率、运行时长

SLO 设定与错误预算

错误预算 = 1 - SLO

SLO = 99.9% → 错误预算 = 0.1% → 每月允许 43.8 分钟停机

错误预算策略

  • 预算充足:可以正常发布新功能、做变更
  • 预算耗尽:冻结非紧急变更,专注稳定性改进
  • 预算接近耗尽:减缓发布频率,加强 Code Review

Prometheus 实现 SLO 监控

PromQL 计算 SLI
# 可用性 SLI(30 天滚动窗口)
1 - (
sum(rate(http_requests_total{code=~"5.."}[30d]))
/
sum(rate(http_requests_total[30d]))
)

# 延迟 SLI(P99 < 500ms 的比例)
sum(rate(http_request_duration_seconds_bucket{le="0.5"}[30d]))
/
sum(rate(http_request_duration_seconds_count[30d]))

常见面试问题

Q1: 99.9% 和 99.99% SLA 在架构上有什么区别?

答案

维度99.9%(8.76h/年)99.99%(52min/年)
部署单 AZ 多副本多 AZ / 同城双活
数据库主从 + 自动切换同步复制 + 秒级切换
发布滚动更新金丝雀 + Feature Flag
故障恢复分钟级秒级自动恢复
成本基础2-3 倍

99.99% 要求消除一切单点故障,架构复杂度和成本显著提升。

相关链接