Sunday面试指南

SLI、SLO 和 SLA 有什么区别?错误预算怎么计算、怎么用?

下面是一段教学用的模拟面试。

🧑‍💻 面试官:SLI、SLO、SLA 分别是什么?

🙋‍♂️ 我:SLI 是指标,SLO 是目标,SLA 是对外约定。

🧑‍💻 面试官:CPU 小于 70%,能代表用户可用性吗?

🙋‍♂️ 我:不够,要看请求是否得到符合要求的结果。

🧑‍💻 面试官:目标 99.9%,错误预算怎么算?预算用完,是不是系统就“不再负责”?

可靠性目标不是报表上的几个九,而是「怎样衡量用户体验,并决定发布与修复的优先级」。

面试速答(60 秒版)

SLI 是服务表现的测量,比如有效请求中成功且按时完成的比例。SLO 是在明确窗口内设定的目标。SLA 则是对外约定,通常还包括未达标后果。

错误预算是允许的未达标空间。按请求计算,SLO 为 99.9%,允许 0.1% 的有效请求不满足定义;按时间计算,才对应相应不可用时间。

我会先定义有效事件、好事件、窗口与观测位置,再计算预算。消耗过快时,减少高风险变更并优先修可靠性。

预算不是放任错误,也不能掩盖安全和数据丢失。CPU 等内部指标帮助定位,但不能代替用户侧服务表现。

指标、目标、承诺,三层关系

图:指标、目标、承诺,三层关系。

知识点详解:从用户体验,到可靠性决策

测什么,比目标写多少更重要

假设查询返回 HTTP 200,结果却为空或严重过期。只统计没有 5xx,就可能把用户失败算成成功。

先定义好事件:正确完成、满足业务要求、在约定时间内返回。总事件也要说明有效请求和排除范围。

观测位置也重要。服务内部可能看不到网关、网络问题,用户侧更完整但采集更复杂。

SLO 与 SLA 为什么不能混用?

SLO 指导团队工程工作,例如窗口内 99.9% 的请求达标。SLA 是外部约定,可能涉及额度补偿等后果。

内部目标和对外承诺可以相关,不要求相同。没有商业 SLA 也可以有 SLO;有合同写几个九,不代表已建立测量与行动机制,见 Google SRE 服务目标。

预算必须使用同一口径

假设教学场景中,一个窗口一百万次有效请求,目标 99.9%。允许不良事件一千次。

已有六百次不达标,剩余四百次。计算的是请求,不是分钟。流量不均匀,不能直接换成固定宕机时长。

只有按时间片定义目标,才适合算不良时间片。固定月与滚动窗口也不同,预算过期和恢复规则需要明确。

所以分子、分母、窗口和目标一起记录,不能拿某一天失败数减另一个窗口的预算。

错误预算,不能混算请求与分钟

图:错误预算,不能混算请求与分钟。

为什么看预算消耗速度?

剩余很多,但短时间消耗极快,也可能马上超标。需要比较不良事件率与允许不良率。

例如允许 0.1%,当前达到 1%,就是以允许速度的十倍消耗。仍需要足够样本与窗口,低流量下单事件会让比例剧变。

多窗口组合有助于分辨突发与长期恶化,不能只看月平均而延迟处理当前事故。

预算怎样影响工程工作?

预算健康,可继续可控发布;过快或用尽,按事先约定优先修可靠性并降低变更风险。

这需要产品、开发、运维共同确认政策,不是事后拿指标争辩,见 Google SRE 实施 SLO。

安全漏洞、数据损坏不应被平均成功率掩盖。预算描述服务目标,不是给严重风险发许可。

看消耗速度,决定工程优先级

图:看消耗速度,决定工程优先级。

面试官继续追问

为什么不统一 100%?

现实链路无法无成本绝对可靠,目标应对应需要与代价。但不能借此忽略可避免问题。

CPU 高,SLO 正常,还要处理吗?

要评估余量与风险。它是内部重要信号,只是不等于当前用户失败。

用尽后停止一切发布?

看约定政策。可靠性修复、安全补丁可能优先发布,不能机械禁止所有变更。

面试速记卡

  • SLI:测量真实服务表现。
  • SLO:明确口径与窗口内目标。
  • SLA:对外约定和后果。
  • 错误预算:事件或时间不能混算。
  • 工程作用:按消耗调整变更与可靠性工作。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历