想象你开了一家叫“云朵奶茶”的店。外卖平台上,你向顾客承诺:下单后 30 分钟内送到,超时就赔 5 元优惠券;店里挂着一块电子屏,每一单从接单、制作到签收的时间都被完整记录;管理看板上,你给团队写下“这个月 95% 的订单必须准时”的内部要求。这三个动作,恰好对应了现代服务可靠性管理中最重要的三层指标体系:SLI、SLO 与 SLA。SLI 是那块记录每单时长的电子屏——把“快不快”变成数字;SLO 是看板上的 95%——给自己划的内部红线;SLA 是页面上的赔付承诺——写给顾客的白纸黑字。三层各司其职,又层层递进:没有 SLI 的度量,目标是空话;没有 SLO 的目标,合同是废纸。接下来,我们就像经营这家奶茶店一样,把这套体系从指标选取、目标设定、合同设计,一路讲到监控告警与季度评审。

岗位关联

掌握“度量-目标-合同”三层的边界与联动,是 SRE 与云原生架构师设计可靠性体系的核心基本功;学完后,你能用这套框架快速审查任何服务的可靠性承诺是否经得起推敲。

目录
  1. 可视化演示
  2. 三层定义关系
  3. SLI指标选取
  4. SLO目标设定
  5. SLA条款设计
  6. 监控告警配置
  7. 评审流程设计
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

三步展示服务可靠性三层指标体系:SLI/SLO/SLA从度量到承诺的分层关系、SLI核心指标选取、以及SLO目标设定与SLA约束机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

三层指标体系 SLI: 度量指标 SLO: 服务目标 SLA: 服务承诺 SLI→SLO→SLA 从度量到承诺完整框架。

三层定义关系

想象你是“云朵奶茶”的店长:电子屏、看板、外卖合同,这三样东西挂在店里不同的墙上,却都在回答同一个问题——“我们的服务到底靠不靠谱”。电子屏回答“现在实际表现如何”,看板回答“我们自己要求多高”,合同回答“对顾客承诺多少”。分开来看,它们是三件事;合起来看,它们是一条可靠性管理的流水线。

技术世界里,这套流水线的三个工位分别叫 SLI(Service Level Indicator,服务等级指标)、SLO(Service Level Objective,服务等级目标)、SLA(Service Level Agreement,服务等级协议)。SLI 是把服务质量翻译成数字的“尺子”;SLO 是团队内部对自己下达的“军令状”;SLA 是对外签署、违约要赔钱的“法律文书”。三者层层递进:先有 SLI 的可靠度量,才有 SLO 的合理目标;有了稳定的 SLO 表现,才敢把它包装成 SLA 承诺。

实践中,SLA 几乎总是比 SLO 更保守。内部目标可以定得激进,合同承诺却要留足缓冲,否则一次随机抖动就可能触发大面积赔偿。这就像奶茶店敢在看板上写“95% 准时”,但只敢在平台上承诺“90% 准时,超出赔券”——多出来的 5% 是给自己留的容错空间,不是给顾客的承诺。

有了这三层各司其职的“分工”,奶茶店不再凭感觉做生意:顾客看得见的是 SLA,店长日常盯的是 SLO,工程师日夜优化的是 SLI。而许多系统事故的根源,恰恰是这三者被混为一谈。

SLI→设目标SLO→签合同SLA\text{SLI} \xrightarrow{\text{设目标}} \text{SLO} \xrightarrow{\text{签合同}} \text{SLA}
三个指标是从“度量”到“承诺”的流水线:度量好了才能定目标,目标稳了才敢签约。
  1. SLI 度量打底先选一把尺子,把服务质量变成可计算的数字。
    SLI=好事件有效事件SLI=\frac{\text{好事件}}{\text{有效事件}}
  2. SLO 设定红线在指标上划出内部必须达成的目标区间。
    SLO: P(送达时间≤30min)≥95%SLO:\ P(\text{送达时间}\le 30\text{min})\ge 95\%
  3. SLA 契约收口把内部目标降一点缓冲,写成有赔偿责任的合同。
    SLA=SLO−δSLA = SLO - \delta

SLI指标选取

顾客不会关心你店里用了什么牌子的珍珠,他只在意外卖 App 上那行字:“预计 30 分钟送达。”所以选指标的第一步,是蹲在用户视角问自己:用户真正感受到的“好”是什么?对奶茶店来说是“按时送到”;对在线支付是“转账成功”;对视频网站是“点开就能播”。

SLI 常见的四类黄金指标包括:可用性、时延、吞吐量、错误率。它们就像奶茶店的四个仪表盘——“能不能接单、送得多快、一小时出多少杯、做错了几单”。其中可用性最常用,定义为“成功请求数占有效请求数的比例”。注意“有效”二字:爬虫、监控探针、压测流量都不算真实用户请求,混进分母会把指标搅浑。这就像店里统计准时率时,得把刷单的水军订单剔除,否则数据毫无意义。

此外还要选好聚合窗口:窗口太短,指标像心电图一样毛刺横飞;窗口太长,又像钝刀切肉,故障发生半天都看不出来。业界常用“最近 N 个请求”或“固定时间窗”两种方式聚合,奶茶店的电子屏展示的是“最近 100 单的准时率”,这就是一个典型的滑动窗口。

把“30 分钟内送达”定义成好事件后,店长扫一眼屏幕就知道“今天每 100 单有几单踩线”。SLI 的哲学浓缩成一句话:先答对“量什么”,才有资格谈“怎么管”。指标选错了,后面所有目标与合同都是空中楼阁。

SLI可用性=N成功N成功+N失败×100%SLI_{\text{可用性}} = \frac{N_{\text{成功}}}{N_{\text{成功}} + N_{\text{失败}}} \times 100\%
分子是让用户满意的“好事件”,分母是用户真实发起的“有效事件”,两者相除就是最直观的可用性读数。
  1. 分子好事件统计被定义为成功的请求,如 30 分钟内送达的订单。
    N成功N_{\text{成功}}
  2. 分母有效事件所有真实用户请求,剔除爬虫、探针与测试流量。
    N成功+N失败N_{\text{成功}}+N_{\text{失败}}
  3. 百分比化两者相除后乘以 100,得到直观的可用性百分比。
    N成功N成功+N失败×100%\frac{N_{\text{成功}}}{N_{\text{成功}}+N_{\text{失败}}}\times 100\%

SLO目标设定

SLO 就像健身教练给你定的训练量:定太高,练伤自己;定太低,练了等于没练。奶茶店这个月的目标是 95% 准时送达——这个数字不是拍脑袋拍的,而是看了上季度的数据:历史 P95 送达时间是 29 分钟,P99 是 34 分钟,所以 30 分钟/95% 是个“跳一跳够得着”的目标。

SLO 由“目标值 + 统计周期”组成,比如“30 天内 99.9% 可用”。真正让 SLO 变好用的,是它派生出的错误预算(Error Budget)概念:既然 SLO 允许一定的失败比例,那么把失败比例换算成时间,就得到“这个月可以犯错多久”的预算。预算花完了,团队这个周期就不能再发布新功能,必须回头修复可靠性。

错误预算的核心公式很简单:允许失败比例 × 周期总时长。以月度 99.9% 可用性为例,一个月 43200 分钟,只允许挂掉 43.2 分钟。这 43 分钟就像奶茶店每月的“超时额度”:雨季多用一点,旺季前就少做冒险的促销活动。消耗速度快不快,则由燃烧率来刻画——它等于实际错误率除以允许错误率,将在监控告警一节重点展开。

错误预算给了团队“错的空间”——这是 SLO 体系最温柔也最强大之处:它不要求 100% 完美,而是把“出错的额度”明码标价,让团队在创新与稳定之间做出理性取舍。就像奶茶店的超时额度,花在刀刃上是成长,花在刀背上才是事故。

EB=(1−SLO)×TEB = (1 - \text{SLO}) \times T
错误预算 = 允许失败的概率 × 周期总时间。SLO 99.9%、30 天时,预算约 43.2 分钟。
  1. 允许失败比例用 1 减去 SLO,算出允许出错的概率边界。
    1−SLO1-\text{SLO}
  2. 周期总时长把统计周期换算成分钟,作为预算的计量单位。
    T=30×24×60=43200 minT=30\times24\times60=43200\text{ min}
  3. 预算存量计算两者相乘,得到本月可消耗的错误预算总量。
    EB=(1−SLO)×T=43.2 minEB=(1-\text{SLO})\times T = 43.2\text{ min}

SLA条款设计

店长在平台挂的是“超时赔 5 元券”,而不是“超时赔 100 元”——因为刮风下雨总有意外,承诺一旦写成合同,就得有兜底。SLA 条款设计的本质,就是回答三个问题:承诺什么?违约怎么赔?什么情况不赔?

SLA(Service Level Agreement,服务等级协议)的条款通常包含四大要件:服务范围(承诺覆盖哪些功能)、指标基线(承诺达到的数值,如“月度可用性 99.5%”)、补偿机制(未达标时按比例折扣或赔偿)、例外条款(不可抗力、用户侧故障、计划内维护等免责情形)。大型云厂商还会做分级服务管理:标准版承诺 99.5%,企业版承诺 99.95%,价格相差数倍,合同条款也相应更严格。

设计条款最常犯的错,是把 SLO 直接抄进 SLA。内部目标 99.9% 看着漂亮,但随机波动、故障演练、计划内变更都可能踩线,一旦写进合同就成了“天天赔钱的自杀条款”。正确的做法是留出安全缓冲:SLO 99.9%,SLA 写 99.5%——相当于奶茶店对外只承诺“90% 准时”,实际内部却要求“95% 准时”,多出来的 5% 就是缓冲。

SLA 是一张“防护网”:SLO 是内部的自我要求,SLA 是外部的法律责任。奶茶店可以少赚一点(发券),但绝不能让合同变成天天赔钱的“死亡条款”。记住,合同里最值钱的一句话,往往是“以下情况不适用本承诺”。

ASLA=ASLO−δA_{\text{SLA}} = A_{\text{SLO}} - \delta
合同承诺值 = 内部目标值 − 安全缓冲。内部目标直接外发,会因随机波动引发大量赔偿。
  1. 内部目标取值SLO 是团队拼尽全力要达到的目标值。
    ASLO=99.9%A_{\text{SLO}}=99.9\%
  2. 预留安全缓冲减去 δ 以覆盖随机波动与计划外故障。
    δ=0.4%\delta=0.4\%
  3. 合同承诺落定内部目标减缓冲,得到对外敢于签署的基线。
    ASLA=99.5%A_{\text{SLA}}=99.5\%

监控告警配置

不能等顾客打电话投诉“怎么还没到”才行动。监控的价值在于“提前看趋势”:这一小时超时率在飙升,就该立刻加人手。SRE 监控 SLO 的核心工具是燃烧率——它回答“错误预算正在以多快的速度被消耗”。

燃烧率 = 实际错误率 ÷ 允许错误率。B=1 表示消耗速度刚好等于预算允许的速度;B>1 表示在加速透支预算,必须告警。谷歌 SRE 推荐的“多窗口多燃烧率”策略非常实用:短窗口(5 分钟/1 小时)捕捉瞬断型故障——比如机房突然断电;长窗口(6 小时/3 天)捕捉慢性恶化——比如磁盘性能缓慢下降。两种故障形态,需要两种时间尺度的“眼睛”。

告警还要分级路由:紧急告警直接触发电话响应,一般告警进工单系统,信息级通知合并到日报,避免“告警风暴”淹没真正的危险信号。同时,监控数据应自动汇成可靠性周报/月报,无需人工拼 Excel。这就像奶茶店的大屏不但显示“今日超时率”,还显示“按这个速度,本月预算还能撑几天”,让店长每天早上扫一眼就有数。

告警不是事后骂人,而是提前叫醒。多窗口燃烧率就像奶茶店的“雨天预案”:突然的暴雨(短窗口)和逐渐变慢的骑手(长窗口)都会触发不同级别的应对措施,而不是等到顾客差评满天飞才反应过来。

B=实际错误率允许错误率B = \frac{\text{实际错误率}}{\text{允许错误率}}
燃烧率是“预算消耗速度的倍数”。B≥1 表示消耗速度越界,需要按窗口阈值触发告警。
  1. 实际错误率分子当前窗口内真实失败的比例,如 5% 订单超时。
    实际错误率=5%\text{实际错误率}=5\%
  2. 允许错误率分母SLO 隐含的失败上限,即 1 减去 SLO 目标。
    允许错误率=1−SLO=0.1%\text{允许错误率}=1-\text{SLO}=0.1\%
  3. 燃烧率比较两者相除,得到预算消耗速度的倍数并触发告警。
    B=5%0.1%=50≥14.4B=\frac{5\%}{0.1\%}=50 \ge 14.4

评审流程设计

每季度末,店长会翻出三个数字:承诺的 95%、实际的送达率、赔出去的券。然后灵魂三问:目标定得合不合理?流程哪里要改?下季度要不要调整?这套“数据驱动的季度复盘”,就是 SLO 评审流程。

评审的第一步是定期回顾:SLI 分布是否健康、错误预算消耗集中在哪些时段、是否有系统性瓶颈。第二步是变更影响评估:任何新功能、架构调整、促销活动上线前,都要评估它可能消耗多少错误预算。第三步是多方协商对齐:业务方要增长、研发要交付、运维要稳定,三方坐到一起,用数据说话,而不是比嗓门。最后是流程沉淀:把评审结论写进 Runbook,让下一季度的执行有章可循。

变更影响评估常用一个朴素的风险矩阵公式:风险 = 影响范围 × 发生概率。核心链路改动影响范围大(评分高),小概率但可能拖垮系统的变更要重点拦截。错误预算已接近耗尽时,高风险变更直接暂缓——就像预算见底的奶茶店,不会再接 500 人的团购大单。

评审不是开会走形式,而是把三层指标体系“拧成闭环”的最后一颗螺丝:度量(SLI)、目标(SLO)、合同(SLA)、监控(燃烧率)、评审(流程优化)——每一环都在为下一环提供输入。奶茶店正是靠着这个季度循环,才敢在第二季度把目标从 95% 提到 96%,因为它知道这个数字有数据撑腰。

R=I×PR = I \times P
变更风险值 = 影响范围 × 发生概率。数值越高,越要谨慎上线。
  1. 影响范围打分按变更波及的核心程度给影响范围打分,核心链路分值高。
    I∈{1,2,3,4,5}I\in\{1,2,3,4,5\}
  2. 发生概率估算依据历史数据评估变更引发故障的可能性。
    P∈[0,1]P\in[0,1]
  3. 风险值排序相乘后在风险矩阵中排序,高风险的变更打回重做。
    R=I×PR=I\times P

AI 应用场景

电商大促订单履约的 SLO 监控

阶段:可观测性与监控告警

解决的问题:618、双11 期间流量洪峰,订单系统偶发超时。传统人工盯大盘的方式反应慢,等用户投诉时错误预算已大量消耗,故障影响被放大。基于 SLI/SLO 的多窗口燃烧率告警能在预算耗尽的早期就介入。

具体案例:某电商中台以“订单提交成功率”和“结算链路 P99 时延”作为 SLI,设定大促期 SLO(成功率 ≥99.95%、P99 ≤500ms)。10 分钟窗口燃烧率 ≥14.4 时自动触发紧急电话,错误预算耗尽后自动暂停非核心发布。大促期间可用性稳定在 99.97%。

云存储服务 SLA 合同设计

阶段:服务等级契约与商业管理

解决的问题:云厂商对客户承诺“月度 99.9% 可用性”,却把内部 SLO 直接当成合同基线,导致故障月赔付金额失控。需要把“内部目标”与“对外合同”解耦,设计缓冲与例外条款。

具体案例:某云厂商将对象存储内部 SLO 定为 99.95%,对外 SLA 定为 99.9%,并加入“计划内维护不计入可用性”的例外条款;按月度可用性阶梯打折(低于 99.9% 赔 10%、低于 99% 赔 30%)。实施后故障月财务赔付从营收的 8% 降至 2%。

音视频 QoS 指标抽取与自动化报告

阶段:指标设计与数据驱动决策

解决的问题:视频卡顿率、起播时延缺少统一度量口径,各团队报数不一致,难以定位真凶。用 SLI 统一“好事件”定义后,配合自动化周报,让质量问题一目了然。

具体案例:某短视频团队定义“卡顿时长占比”与“首帧时间 P95”两个 SLI,自动化聚合周报。季度评审时发现某低端机型贡献了 40% 的错误预算消耗,推动专项性能优化,整体卡顿时长下降 35%。

Python 演示

python49 行
import randomfrom collections import deque  class BubbleTeaShop:    """奶茶店三层指标体系模拟器"""     def __init__(self, slo_limit=30, slo_target=0.95, sla_target=0.90):        self.slo_limit = slo_limit        self.slo_target = slo_target        self.sla_target = sla_target        self.window = deque(maxlen=200)     def new_order(self):        minutes = random.gauss(26, 6)        if random.random() < 0.10:            minutes += 12        minutes = max(15, minutes)        self.window.append(minutes)        return minutes     def current_sli(self):        if not self.window:            return 1.0        ok = sum(1 for m in self.window if m <= self.slo_limit)        return ok / len(self.window)     def burn_rate(self):        actual_err = 1 - self.current_sli()        allowed_err = 1 - self.slo_target        return actual_err / allowed_err if allowed_err else 0.0     def report(self):        sli = self.current_sli() * 100        burn = self.burn_rate()        if sli < self.sla_target * 100:            status = "SLA breach risk"        elif sli < self.slo_target * 100:            status = "SLO alert"        else:            status = "healthy"        return "SLI={:.2f}% SLO={:.0f}% SLA={:.0f}% burn_rate={:.2f} status={}".format(            sli, self.slo_target * 100, self.sla_target * 100, burn, status)  shop = BubbleTeaShop()for _ in range(150):    shop.new_order()print(shop.report())
目的:模拟奶茶店 150 笔外卖订单的送达时间,实时计算 SLI、对照 SLO 与 SLA 阈值,并输出燃烧率与健康状态,直观演示三层指标体系的联动逻辑。
  1. self.window = deque(maxlen=200)用双向队列做滑动窗口,只保留最近 200 单,模拟“最近 N 个请求”的聚合方式。
  2. minutes = random.gauss(26, 6)送达时间围绕 26 分钟正态分布,模拟日常波动。
  3. if random.random() < 0.10: minutes += 1210% 概率追加 12 分钟,模拟暴雨、爆单等突发状况。
  4. ok = sum(1 for m in self.window if m <= self.slo_limit)SLI 分子:统计窗口内“好事件”(30 分钟内送达)的数量。
  5. return ok / len(self.window)SLI = 好事件 / 有效事件,即当前滑动窗口的准时率。
  6. allowed_err = 1 - self.slo_target允许错误率 = 1 − SLO,这是错误预算的比例口径。
  7. return actual_err / allowed_err燃烧率 = 实际错误率 ÷ 允许错误率,数值越离 1 越远越危险。
  8. if sli < self.sla_target * 100:先判断是否跌破 SLA 合同线(最严重),再判断是否跌破 SLO 内部线。

常见误区

误区SLO 和 SLA 不都是 99.9% 吗?写哪个都一样,反正都是服务等级承诺,混着用没问题。

正解SLO 是内部目标,不赔付;SLA 是合同条款,违约要赔钱。SLA 几乎总是比 SLO 更宽松——SLO 定 99.9% 时,SLA 往往只写 99.5%。因为合同要承担法律成本和随机波动,若直接照抄 SLO,一次 P99 毛刺就可能触发大面积赔偿。这就像奶茶店看板上写“95% 准时”,平台上只敢承诺“90% 准时赔券”。

为何常见:两者缩写相似、数值接近,初学阶段很容易把“内部标准”和“外部合同”混为一谈。

误区把 CPU 使用率、磁盘 IO、内存水位全部纳入 SLI,监控得越全越安全,指标多总比漏掉强。

正解SLI 必须从用户视角抽取关键体验,可用性、时延、错误率、吞吐量四大类足够覆盖大多数场景。全量监控会产生大量低价值信号和告警疲劳,底层指标波动未必影响用户体验,反而掩盖了核心链路的真问题。奶茶店不需要监控珍珠的温度曲线,只需要盯着“送到没送到、准时没准时”。

为何常见:运维直觉是“看得全 = 更安全”,却忽略了监控的投资回报率和信噪比。

误区SLO 定到 99.999% 才显得服务牛,客户看了也放心,评价也高。

正解SLO 越高,错误预算越少。99.999% 的月度可用性只允许约 26 秒的故障时间,意味着几乎不能做任何发布和变更,研发迭代被锁死;而为了多一个“9“,架构成本往往翻倍。合理的 SLO 应从历史分位和业务价值出发,找到”够用且可达成”的平衡点,而不是把 SLO 当营销卖点。

为何常见:人们容易把“目标高”等同于“服务好”,忽略了 SLO 本质上是工程约束,而不是广告语。

误区监控系统盯着 SLO 数值,跌到 95% 以下触发告警,没跌破就说明一切正常,不用管。

正解SLO 是“结果指标”,等月度 SLO 跌破才告警为时已晚——错误预算早已耗尽。正确做法是用燃烧率在多窗口(5 分钟/1 小时/6 小时)内提前预警,在预算被大量消耗前介入。就像奶茶店不能等月底发现“这个月赔券赔超了”才行动,而要在雨天晚上每小时的超时率飙到 20% 时就加派骑手。

为何常见:线性思维——以为“达标 = 没事、不达标 = 报警”,忽略了预算消耗的速度比剩余量更能说明风险。

误区SLA 是法律合同,签了就不能动,定了就按这个执行到地老天荒。

正解SLA 需要周期性评审:业务模型变化、技术架构升级、客户分级调整,都会让旧合同变得过时。不调整的 SLA 要么过于保守(丢掉商业机会),要么过于激进(赔付失控)。真正的流程是“季度评审 SLO → 年度回顾 SLA”,让合同跟着业务一起演进。

为何常见:合同给人的印象是“签完即锁死”,但可靠性工程要求的是数据驱动的持续修正。

面试题

Q1. SLI 在服务可靠性体系中的角色是什么?

单选题 · easy

  • A.对外签署的合同承诺
  • B.量化服务表现的指标← 正确答案
  • C.告警通知的接收人
  • D.基础设施硬件配置

答案:B。SLI(服务等级指标)是把用户服务体验量化为数字的“尺子”,比如 30 分钟内送达率。对外合同是 SLA,告警通知是监控动作,硬件配置不属于指标体系范畴。就像奶茶店电子屏上记录的每单时长。

Q2. “奶茶店 30 分钟内送达率 ≥95%”最准确属于哪一层?

单选题 · easy

  • A.SLI 指标定义
  • B.SLO 内部目标← 正确答案
  • C.SLA 法律合同
  • D.错误预算配额

答案:B。这是写在管理看板上的内部达标线,属于 SLO(服务等级目标)。它不构成对顾客的赔付义务;若写进平台页面并承诺超时赔券,才升级为 SLA。SLI 是纯度量,错误预算是由 SLO 推导出来的允许失败量。

Q3. 相对 SLO,SLA 的设计要求通常是?

单选题 · easy

  • A.更严格更激进
  • B.完全一致相同
  • C.保留缓冲更宽松← 正确答案
  • D.与 SLI 完全相同

答案:C。SLA 是合同,违约要赔钱,所以通常比 SLO 更宽松、留足缓冲。比如内部 SLO 95%,外部 SLA 写 90%。如果 SLA 比 SLO 更激进,等于把内部目标直接抄进合同,一次随机抖动就会触发赔偿。

Q4. 某服务月度 SLO=99.9%(按 30 天计),每月错误预算约为多少?

单选题 · mid

  • A.4.32 分钟
  • B.43.2 分钟← 正确答案
  • C.432 分钟
  • D.4320 分钟

答案:B。EB = (1 − SLO) × T = 0.001 × 30 × 24 × 60 = 43.2 分钟。A 是少乘了 10 倍,C、D 数量级错误。这 43.2 分钟是每月允许“挂掉”的总时长,相当于奶茶店每月的超时额度。

Q5. 燃烧率 B=2 表示什么?

单选题 · mid

  • A.消耗速度是允许的两倍← 正确答案
  • B.预算存量还剩两倍
  • C.目标提高为原来两倍
  • D.指标数量增加两倍

答案:A。燃烧率 = 实际错误率 ÷ 允许错误率。B=2 意味着错误预算正以允许速度的两倍被消耗,可用时间只剩一半。它衡量的是“消耗速度”而非“剩余量”,是提前告警的核心指标。

Q6. 可用性 SLI 中“有效请求”应剔除哪类流量?

单选题 · mid

  • A.正常用户请求流量
  • B.监控探针与爬虫流量← 正确答案
  • C.核心链路成功流量
  • D.高优先级付费流量

答案:B。有效请求必须是真实用户发起的请求,爬虫、监控探针、压测流量混入分母会稀释指标。就像统计奶茶准时率时,刷单水军的订单不算数。剔除噪声后,SLI 才能反映真实用户体验。

Q7. 多窗口燃烧率告警主要解决什么问题?

单选题 · hard

  • A.同时检测突发与慢性故障← 正确答案
  • B.提高告警到具体代码行
  • C.彻底消除误报与漏报
  • D.替代所有日志采集系统

答案:A。多窗口(如 5 分钟/1 小时/6 小时)燃烧率同时兼顾两种故障形态:短窗口捕捉瞬断型突发,长窗口捕捉持续慢性恶化。它不定位代码、不消除误报、更不替代日志,而是从“时间尺度”上互补地发现风险——既防突然停电,也防温水煮青蛙。

Q8. 设计 SLA 条款需要包含哪些内容?

多选题 · mid

  • A.服务范围与指标基线← 正确答案
  • B.违约补偿具体机制← 正确答案
  • C.不可抗力免责情形← 正确答案
  • D.代码评审人员名单

答案:ABC。SLA 条款四大要件是服务范围、指标基线、补偿机制、例外条款(如不可抗力)。代码评审人员名单是研发流程细节,不属于对外合同内容。合同要回答“承诺什么、赔多少、什么情况不赔”。

Q9. 以下哪些做法能防止错误预算被耗尽?

多选题 · hard

  • A.设置短窗口燃烧率告警← 正确答案
  • B.预算耗尽后暂停高风险发布← 正确答案
  • C.完全取消所有变更发布
  • D.定期评审并调整 SLO 目标← 正确答案

答案:ABD。短窗口燃烧率提前预警、预算耗尽后暂停高风险变更、定期评审调整目标都能保护预算。完全取消变更则因噎废食——SLO 体系的目的不是冻结业务,而是让发布与稳定可量化地共存。

Q10. 服务同时配置 1 小时窗口燃烧率≥14.4 和 6 小时窗口燃烧率≥6 的告警,以下说法正确的有?

多选题 · extreme

  • A.短窗口捕捉突发性快速恶化← 正确答案
  • B.长窗口捕捉持续性慢性故障← 正确答案
  • C.两窗口可共用一条告警通道
  • D.燃烧率越高意味着越危险← 正确答案

答案:ABD。1 小时窗口阈值高,用于快速捕捉突发故障;6 小时窗口阈值低,用于发现持续缓慢恶化。燃烧率越高,预算消耗越快、越危险。两条告警通道应分级隔离,不能合并——紧急故障和慢性问题用同一通道会相互淹没,导致真正的紧急事件被忽视。