目前业界有两种衡量系统可用性的方式,一个是时间维度,一个是请
求维度,我们先来看这两个维度的计算公式。
这两个公式很简单,我们得深入进去,一一来看。
我们先来看时间维度的系统可用性。用一句话来概括:时长维度,是从故障角度出发对系统
稳定性进行评估。
这类计算方式我们最常见,毕竟你的系统在一段时间里不出现故障,就说明它很稳定嘛!不
过,在真实的使用场景中,怎么样才算是可用时长,什么情况下又是不可用时长,这个是怎
么定义的呢?

时间维度:Availability = Uptime / (Uptime + Downtime)
请求维度:Availability = Successful request / Total request

我们知道,一个人如果发烧了,体温一般会超过 37.5 度,那如果这个人的体温正好达到这
个温度,是不是代表他一定是生病了呢?依据生活经验,我们知道不一定。为什么呢?因为
我们判断一个人是否发烧生病,不是只看这一次、一时的体温,还要看他体温是不是持续超
过 37.5 度。
所以,这里就涉及到一个测量方法和判定方法的问题,包含三个要素:一个是衡量指标,比
如体温就是衡量指标;第二个是衡量目标,达到什么目标是正常,达不到就是异常,低于
37.5 度算正常,超过 37.5 度就是异常,但是单次测量不能说明问题,我们可以多次测量,
比如 6 次中有至少 4 次低于 37.5 度才算正常,转化成比例的话就是 67%;第三个是影响
时长,比如持续超过 12 小时。

对应到系统上,我们也会用一系列的标准和判定逻辑来说明系统是否正常。比如,系统请求
状态码为非 5xx 的比例,也就是请求成功率低于 95%,已经连续超过 10 分钟,这时就要
算作故障,那么 10 分钟就要纳入 Downtime(宕机时间),如果达不到这个标准,就不
算作故障,只是算作一般或偶然的异常问题。
这里同样有三个要素:衡量指标,系统请求状态码;衡量目标,非 5xx 占比,也就是成功
率达到 95%;影响时长,持续 10 分钟。
因此,只有当问题达到一定影响程度才会算作故障,这时才会计算不可用时长,也就是上面
公式中的 Downtime。同时,我们还要求一个周期内,允许的 Downtime,或者说是系统
的“生病时间”是有限的,用这个有限时间来约束系统稳定性。
      针对时长维度的稳定性计算方式的弊端,就是稳定性只与故障发生挂钩。

这就需要第二种衡量方式了,也就是从请求维度来衡量系统可用性。
用一句话来说,请求维度,是从成功请求占比的角度出发,对系统的稳定性进行评估。

请求维度的系统可用性同样包含三个关键要素,第一个衡量指标,请求成功率;第二个衡量
目标,成功率达到 95% 才算系统运行正常;第三个是统计周期,比如一天、一周、一个月
等等,我们是在一个统计周期内计算整体状况,而不是看单次的。
你看,这种方式对系统运行状况是否稳定监管得更为严格,不会漏掉任何一次问题的影响,
因为它对系统整体运行的稳定性判定,不仅仅会通过单次的异常影响进行评估,还会累计叠
加进行周期性的评估。
       到这里,我们就总结出一条至关重要的经验了:故障一定意味着不稳定,但是不稳定,并不
意味着一定有故障发生。

在 SRE 实践中,通常会选择第二种,也就是根据成功请
求的比例来衡量稳定性:
Availability = Successful request / Total request

在 SRE 中就是设定稳定性衡量标准的 SLI 和 SLO 的过程。
具体来看下这两个概念。SLI,Service Level Indicator,服务等级指标,其实就是我们选
择哪些指标来衡量我们的稳定性。而 SLO,Service Level Objective,服务等级目标,指
的就是我们设定的稳定性目标,比如“几个 9”这样的目标。
SLI 和 SLO 这两个概念你一定要牢牢记住,接下来我们会反复讲到它们,因为落地 SRE 的
第一步其实就是“选择合适的 SLI,设定对应的 SLO”。
     我们以电商交易系统中的一个核心应用“购物车”为例,给它取名叫做 trade_cart。
trade_cart 是以请求维度来衡量稳定性的,也就是说单次请求如果返回的是非 5xx 的状态
码,我们认为该次请求是成功的;如果返回的是 5xx 状态码,如我们常见的 502 或 503,
我们就判断这次请求是失败的。
但是,这个状态码只能标识单次请求的场景。我们之前讲过,单次的异常与否并不能代表这
个应用是否稳定,所以,我们就要看在一个周期内,所有调用次数的成功率是多少,以此来
确定它是否稳定。比如我们给这个“状态码返回为非 5xx 的比例”设定一个目标,如果大
于等于 99.95%,我们就认为这个应用是稳定的。
在 SRE 实践中,我们用 SLI 和 SLO 来描述。“状态码为非 5xx 的比例”就是 SLI,“大于
等于 99.95%”就是 SLO。说得更直接一点,SLO 是 SLI 要达成的目标。

SRE学习笔记2:衡量系统稳定性的指标相关推荐

  1. Linux学习笔记之——Linux系统内部相关介绍

    Linux学习笔记之--Linux系统内部相关介绍 摘要:主要记录一些比较有用的能够帮助理解和使用Linux的知识.比如一些相关概念.没兴趣的看看就好.知道有这么个东西.注意事项.和一些常用目录的作用 ...

  2. STM32F103学习笔记四 时钟系统

    STM32F103学习笔记四 时钟系统 本文简述了自己学习时钟系统的一些框架,参照风水月 1. 单片机中时钟系统的理解 1.1 概述 时钟是单片机的脉搏,是单片机的驱动源 用任何一个外设都必须打开相应 ...

  3. oracle如何往dg加盘_学习笔记:Oracle DG系统 主备库中表空间和数据文件增加删除等管...

    天萃荷净 Oracle Data Guard表空间和数据文件管理汇总 汇总日常工作中操作,在Oracle DG结构系统中,如何删除备库表空间和数据文件,如何管理主库与备库之间的文件系统,详见文章内容. ...

  4. PhysX学习笔记2 -cloth系统3d模型的导入

    PhysX学习笔记2 -cloth系统3d模型的导入 PhysX的cloth的demo中,3d模型是用.obj格式. 环境:win2000, PhysX安装包: PhysX_6.11.01_Syste ...

  5. C++ MFC 学习笔记+小型通讯录系统实现

    MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C++ & MFC]https://www.c ...

  6. 【学习笔记】秒杀系统架构设计

    秒杀其实主要解决两个问题 并发读 VS 并发写 并发读的核心优化理念是尽量减少用户到服务端来"读"数据,或者让他们读更少的数据 并发写的处理原则也一样,它要求我们在数据库层面独立出 ...

  7. 操作系统学习笔记-04-操作系统的运行机制和体系结构

    操作系统学习笔记-2019 王道考研 操作系统-04-操作系统的运行机制和体系结构 文章目录 4-操作系统的运行机制和体系结构 4.1知识总览 4.2运行机制 4.2.1预备知识:什么是指令? 4.2 ...

  8. 操作系统学习笔记-03-操作系统的发展和分类

    操作系统学习笔记-2019 王道考研 操作系统-01-操作系统的概念(定义),功能和目标 文章目录 3-操作系统的发展和分类 3.1知识总览 3.2 手工操作,纸带机,串行式 3.3批处理阶段 -单道 ...

  9. 操作系统学习笔记-02-操作系统的特征

    操作系统学习笔记-2019 王道考研 操作系统-2-操作系统的特征 文章目录 02-操作系统四个的特征 2.1-知识概览 2.2并发 2.3共享 2.3并发和共享的关系 2.4虚拟 2.5小结:虚拟技 ...

最新文章

  1. 面包好吃却五毒俱全,吃前请三思!
  2. The organization of a typical MVC application
  3. mysqld服务启动失败, Failed to restart mysqld.service: Unit not found.
  4. android 更改软键盘_如何在Android的Google键盘上更改声音和振动
  5. Android事件分发 笔记
  6. discuz常用变量
  7. 如何确保分布式场景下的并发幂等性?
  8. vc++HOOK详细讲解
  9. 关于eclipse IDE安装Darkest Dark Theme主题插件
  10. 爬虫项目实操五、用Scrapy爬取当当图书榜单
  11. 135编辑器点击换图html,这5种换图姿势,只有排版高手才会!
  12. tomcat php centeros,linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境...
  13. 雷电2接口_雷电3和TYPE-C都是干什么的?一文读懂全部
  14. Python压缩解压--lzma
  15. Java Web视频(2013)
  16. 函数对称性常见公式_函数的各种对称性
  17. USB协议学习笔记 - CUSTOM HID 设备
  18. 全票通过!微众开源项目EventMesh进入Apache孵化器
  19. 探究vite——新一代前端开发与构建工具(一)
  20. 程序设计基石与实践之实现数字七段显示与发扑克牌问题

热门文章

  1. 监理工程师证书怎么考?
  2. 山西职称英语和计算机考试,山西2017职称英语考试免考条件
  3. MAYA2018中按到f或a摄像机失效解决办法
  4. Build.VERSION.SDK_INT < Build.VERSION_CODES.O的含义
  5. c#实现深拷贝的几种方法
  6. 分布函数弱收敛和一致收敛
  7. netty——Channl的常用方法、ChannelFuture、CloseFuture
  8. flume channel 选择
  9. MATLAB代码:基于蒙特卡洛算法的电动汽车充电负荷预测 关键词:蒙特卡洛 电动汽车 充电负荷预测
  10. 电子制造业生产进度监控困难?全流程条码管理轻松解决