一、引言

在当今复杂且高度依赖分布式系统的软件开发环境中,确保服务的可靠性和性能至关重要。服务水平目标(Service Level Objectives,SLO)作为衡量系统可靠性与性能的关键指标,为服务提供者和消费者设定了明确的期望。然而,在追求高可靠性的过程中,完全避免错误和故障几乎是不可能的。为了在可靠性和创新之间取得平衡,错误预算(Error Budgets)这一概念应运而生。错误预算是SLO允许的可靠性偏差阈值,它为系统在特定时间段内可以容忍的错误或故障量设定了界限。



二、Error Budgets的基本概念

(一)定义

错误预算是用于测量实际性能与预期性能之间差异的指标,具体表现为期望或可容忍的错误数。它是从SLO反向推导出来的,例如,如果SLO设定为99.9%的可用性,那么错误预算就是0.1%。这意味着在特定的时间段内,系统允许出现一定比例的错误或故障,而不会违反SLO。

(二)计算方式

错误预算的计算相对简单,通常基于SLO的目标值和特定时间段内的总事件数。例如,假设一个应用在4周的时间内,所有的请求次数为4,653,680次,按照99.9%的SLO反向推导,就可以得到容许的错误次数,即错误预算。如果SLO是在7天的滚动期内85%的请求是良好的,且在过去一周收到了60480个请求,则错误预算允许该总数的15%(即9072个请求)是错误请求。

(三)作用

错误预算的最大作用是“提示你还有多少次犯错的机会”。它以一种直观的方式展示了系统在满足SLO的前提下可以承受的错误程度,使团队能够清楚地了解系统的稳定性状况。与单纯的成功率统计数据相比,错误预算的警示效果更强烈,能够增强团队对生产系统的敬畏心理。

三、Error Budgets与SLO、SLA的关系

(一)与SLO的关系

SLO是Error Budgets的基础,它定义了服务在特定时间段内必须达到的性能和可靠性标准。错误预算则是SLO的具体量化体现,它根据SLO的目标值确定了系统可以容忍的错误范围。例如,一个基于请求的SLO可能规定“至少95%的请求延迟时间低于100毫秒”,那么错误预算就是基于这个SLO计算出的在特定时间段内允许出现的高于100毫秒延迟的请求比例。

(二)与SLA的关系

服务水平协议(Service Level Agreement,SLA)是服务与用户之间的一个明确的或不明确的协议,描述了在达到或没有达到SLO的后果。错误预算是SLO和SLA之间的缓冲地带,它允许系统在一定范围内出现错误而不触发SLA中的违约条款。例如,如果SLA规定服务在一个日历月内未达到99.95%的可用性,则服务提供商每分钟都会因不合规而补偿客户,而错误预算则为系统提供了一个容错空间,使得在不超过错误预算的情况下,系统可以有一定的灵活性进行维护、升级或处理突发情况。

四、Error Budgets的应用方式

(一)稳定性燃尽图

将错误预算以燃尽图的形式直观地展示出来,可以让团队成员随时了解错误预算的消耗情况。当错误预算在一个周期内(如4个自然周)被消耗完时,即使整个过程中没有出现达到故障标准的问题,该周期的稳定性要求也是不达标的。当错误预算消耗到一定比例(如80%或90%)时,就需要开始预警,控制各种变更,或者投入精力去解决影响稳定性的问题。例如,谷歌建议使用4个自然周作为错误预算的统计周期,这样可以避免自然月导致的跨周统计问题。

(二)故障定级

将错误预算应用于故障定级中,可以按照问题消耗的错误预算比例来评判故障的严重程度。例如,将故障等级设置为P0—P4五个级别,P0为最高,P4为最低。以一个请求成功率SLO对应的错误预算为25,000次为例,如果一个问题产生的错误请求数超过了5000次,即错误预算一下就被消耗掉20%以上,这时可以把这次故障定为P2级;如果消耗30%以上,定为P1级;消耗50%以上,定为P0级等。通过这种方式,可以实现故障的量化管理,为故障处理和资源分配提供依据。

(三)稳定性共识机制

根据错误预算的剩余情况,制定相应的行动措施,以达成稳定性共识。当剩余预算充足或未消耗完之前,对问题的发生要有一定的容忍度。例如,在4周的一个周期内,如果错误预算没有被消耗完,即使出现一些问题,甚至是故障,也可以进行容忍。而当剩余预算消耗过快或即将消耗完之前,SRE(站点可靠性工程师)有权中止和拒绝任何线上变更,业务开发团队也有权拒绝新的需求,直到问题解决且等到下一个周期有了新的错误预算后,再恢复正常变更节奏。

(四)告警管理

利用错误预算来优化告警管理,可以减少不必要的告警,提高告警的准确性和行动指导价值。例如,可以合并相同相似的告警,只关注对稳定性造成影响的告警。当单次问题消耗的错误预算达到一定阈值(如20%或30%)时,才发出告警信息,这样可以使告警数量不多,同时又非常精准。

五、案例分析

(一)案例背景

某电商平台为了提升用户体验,设定了一系列严格的SLO,其中包括系统的可用性达到99.99%,响应时间方面,95%的请求延迟时间要低于200毫秒等。为了实现这些SLO,该平台引入了错误预算的概念。

(二)错误预算的设定

根据SLO的目标值,该平台计算出了每个SLO对应的错误预算。例如,对于99.99%的可用性SLO,错误预算为0.01%,即每个月允许的不可用时间不超过4.32分钟;对于95%的请求延迟时间低于200毫秒的SLO,根据平台的请求量和历史数据,计算出了在特定时间段内允许出现的延迟高于200毫秒的请求比例。

(三)应用过程
  1. 稳定性监控:平台通过监控系统实时跟踪各项指标,并将错误预算以燃尽图的形式展示在仪表盘上。开发团队、运维团队和业务团队都可以随时查看错误预算的消耗情况。
  2. 故障处理:在一次系统升级过程中,由于配置错误,导致部分服务出现故障,错误预算的消耗速度明显加快。当错误预算消耗到80%时,系统发出了预警,开发团队和运维团队立即停止了其他非紧急的变更操作,集中精力解决故障问题。经过几个小时的紧急处理,故障得到解决,错误预算的消耗得到了控制。
  3. 变更管理:在错误预算充足的情况下,开发团队可以按照正常的节奏进行新功能的开发和发布。然而,当错误预算接近耗尽时,开发团队需要谨慎评估新功能的发布风险。例如,在一次重要的促销活动前,开发团队计划发布一个新功能,但由于错误预算已经所剩不多,经过评估,决定推迟该功能的发布,直到下一个周期有了新的错误预算后再进行。
(四)效果评估

通过引入错误预算,该电商平台在保证系统可靠性的同时,也提高了开发团队的敏捷性。在过去的几个月里,系统的可用性始终保持在99.99%以上,同时新功能的发布速度也没有受到太大影响。开发团队和运维团队之间的协作也更加顺畅,通过错误预算的量化指标,双方能够更好地沟通和协调工作。

六、结论

错误预算作为SLO允许的可靠性偏差阈值,在软件开发和系统运维中具有重要的意义。它为团队提供了一种在可靠性和创新之间取得平衡的有效方法,通过量化系统可以容忍的错误范围,使团队能够更加科学地进行系统维护、变更管理和故障处理。在实际应用中,企业可以根据自身的业务需求和系统特点,合理设定错误预算,并采用多种应用方式来充分发挥其作用,从而提高系统的可靠性和用户体验,促进业务的持续发展。

 

扫描下方二维码,一个老毕登免费为你解答更多软件开发疑问!

物业管理工单AI调度方案:维修响应缩短至30分钟的核心算法

物业报修总是慢半拍?业主群里天天吐槽维修不及时?物业管理人员为工单分配焦头烂额?别慌!今天给大家揭秘一套超实用的物业工单 AI 调度方案,手把手教你用核心算法把维修响应时间从几小时压缩到 30 分钟内,让业主满意度直线飙升!​据中国物业管理协会发布的《2023 年物业管理行业发展报告》显示,在业主对物业的投诉中,维修响应不及时占比高达 38%。而当维修响应时间控制在 30 分钟以内时,业主对物业的

电商网站加速方案:WooCommerce加载从5s到0.9s的实操

你的 WooCommerce 电商网站是不是也总被用户吐槽 “加载慢如龟”?明明商品超有吸引力,却因为 5 秒的加载时间,白白流失了大量潜在客户!别慌!今天手把手教你把网站加载速度从 5 秒直接干到 0.9 秒,让你的店铺直接起飞!​根据 Akamai 的研究报告显示,网页加载时间每延迟 1 秒,就会导致用户转化率下降 7%,销售额降低 11% ,用户跳出率增加 16%。想象一下,每天几百上千的访

APP开发后如何做A/B测试? (转化率提升指南!界面/文案/按钮优化案例)

辛辛苦苦开发的 APP,转化率却总是上不去?根据麦肯锡发布的《2024 年移动应用用户行为报告》显示,经过科学 A/B 测试优化的 APP,平均转化率能提升 35%!想要让界面、文案、按钮成为转化 “利器”,A/B 测试绝对是必备技能。今天就通过真实案例,手把手教你用 A/B 测试提升 APP 转化率!一、为啥 A/B 测试是转化率的 “加速器”?用数据说话先看两组真实数据:某电商 APP 对商品

APP开发后如何做热更新? (动态修复BUG!不重新上架的更新方案)

APP 刚上线就发现严重 BUG,难道只能等重新上架 “干着急”?据 App Annie 发布的《2024 年移动应用质量报告》显示,因等待重新上架修复问题,平均每个 APP 会流失 12% 的用户。而热更新技术能让你绕过应用商店审核,动态修复 BUG!今天就手把手教你 APP 热更新的实现方案,让你的应用随时 “满血复活”。一、为啥热更新成了开发者的 “救命稻草”?先看一组真实数据:某热门游戏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部