我在极客时间《架构实战营》的视频课里面,经常遇到同学问"MTTR、MTBF、MTTF、可用性、可靠性"这一大堆名词的区别于联系,坦白的说,以前我们在做架构设计方案的时候,并没有太多去刻意深入研究这几个名词,更多的只是知道大概的含义,以及在实际架构设计和监控中我们应该怎么做。通常我们会发现,大家用的比较多的就是“几个9”这个高可用的指标,具体在计算的时候就是统计非故障的时间占总运行时间的比例,而且一般情况下,我们谈论可靠性和谈论可用性基本是一个意思,有的人习惯说可靠性,有的人习惯说可用性,大家沟通交流也没有什么障碍。

虽然如此,很多同学反馈在面试的时候要背背八股文,如果这些指标的区别和联系不清楚的话,面试的时候很容易讲不清楚,或者讲的时候发现卡壳了,因此我决定深入去研究一下,按道理来说这个东东应该是很容易查到的。

好家伙,不查不知道,一查吓一跳,这几个概念的解释和理解,网络上的文章也是各种说法,有的说法还是自相矛盾的,我挑选几个典型的说法给大家感受一下。

第一种解释(原文链接):MTBF = MTTF + MTTR

第二种解释(原文链接):MTBF = MTTD + MTTR + MTTF

这篇文章里面的图和MTBF的计算方法是冲突的,按照它的计算方法,MTBF应该是MTTF的平均值,但是图里面展示的内容却又是:MTBF = MTTD + MTTR + MTTF

第三种解释(原文链接):MTBF是指系统正常运行的时间,不包含MTTR

这个定义符合我最初的理解,但是如果这样理解的话,感觉MTBF和MTTF又是一样的意思了。

第四种解释(原文链接):这是wiki的解释,实际上也是我们在做监控的时候用到的方法

初步一轮查下来,我自己都有点懵逼了,主要疑惑的点有几点:

1)MTBF包含MTTR吗?我个人理解是不包含的,如果包含的话,理解起来就怪怪的,也与实际计算可用性的公式对不上;

2)MTBF和MTTF是什么关系?MTBF = MTTF + MTTR吗?

3)可用性和可靠性什么关系?可靠性高是不是就可用性高?

带着这些疑问,继续深入查询,经过持续两天的查各种中文英文资料,最后总算把这几个东东给梳理清楚了。下面我们来看一下如何理解这些概念的区别以及它们的关系。

首先,最重要的一点,也是理解这一堆概念的关键,就是我们要把故障分为“可修复”和“不可修复”故障,字面意思很好理解,举个简单的例子:我们的电脑是一个可修复的系统,比如说内存条坏了,我们就换一根内存条后电脑还是可以继续用;但是内存条坏了,对于内存条来说,这就是“不可修复”的故障,我们就只能换内存条。

有的人可能会说:内存条坏了也可以修呀,没有什么东西修不好的!这个道理是对的,但是实践中这样做就是错误的,原因在于修复的成本太高了,可能一条新的内存条价值100元,你修复一条烧坏的内存条成本是200元,因此对于这种“不可修复”的故障,我们肯定是直接换更划得来。但是如果电脑只坏了一根内存条,你就把整个电脑都丢了,要么你是土豪,要么就是傻了 :)

把故障分为“可修复”和“不可修复”有什么意义呢?主要就在于不同的故障我们衡量的指标不同,对于“可修复”的系统,我们衡量的是它的“可靠性”和“可用性”,这里的可靠性是指“正常运行的时长;对于“不可修复”的系统或者元器件,我们衡量的是它的可靠性,但这里的可靠性是指“寿命”。

基于这个理解,我们就可以把这一大堆概念分为两组:

  1. 不可修复的故障:MTTF、可靠性、寿命
  2. 可修复的故障:MTTR、MTBF、可靠性、可用性

因此,第一个结论就很明显了:MTTF是用来衡量“不可修复”的元器件(系统、资产等都可以)的“寿命”(可靠性),统计方法就是收集大量的元器件的寿命然后取平均值。MTTF不是MTBF的一部分,两者的应用场景是不同的,MTTF和MTBF只有一字之差”To“和”Between“,含义就是可修复和不可修复的区别。更进一步的解释可以参考这篇文章:What is mean time to failure?

接下来我们看第二个关键概念:MTTR。通过前面的截图我们可以看到,这个MTTR的解释有多种,有的把R解释为Recovery,有的解释为Repair,有的包含发现时间、定位时间、修复时间,有的只是说是修复时间,不包含发现和定位时间,因此又多了一个MTTD(Mean time to diagnose)的概念。

因为没有规范定义,我也不能直接说这些理解就一定不正确,但是无论从计算还是理解简单的角度来看,我觉得把MTTR理解为故障发生到故障修复完成这段时间是最合适的,这个时间段包括发现时间、定位时间、修复时间。当然,我们在做系统设计的时候,确实需要将MTTR继续分解为如何快速发现(监控设计)、如何快速定位(问题定位设计,例如日志收集、全链路跟踪)、如何快速恢复(例如倒换、降级)等,但是在计算可用性和可靠性指标的时候,是不需要将MTTR进一步细化的。

明白MTTR的定义后,第三个概念MTBF就很好理解了,MTBF就是指系统正常运行的平均时间,MTBF不包含MTTR,因为系统在故障修复期间是没有正常提供服务的。这也是MTBF中的”Between“的含义。因此我们可以看到wiki上关于MTBF的解释是正确的。MTBF的计算方式如下:

当我们理解MTTF、MTTR、MTBF的定义后,再来看看可靠性和可用性的定义和理解。

可靠性:无论是“可修复故障”还是“不可修复故障”,都有可靠性,但是衡量指标是不同的。

对于”不可修复故障”的元器件,可靠性衡量指标就是MTTF,简单来说就是寿命越长越可靠,比如说同样是内存条,A品牌的MTTF是2年,B品牌的MTTF是3年,那么B品牌的内存条更可靠。

而对于“可修复故障”,衡量可靠性指标就是MTBF,简单来说就是故障次数越少越可靠,比如说同样是电脑,A品牌的某个电脑一年坏5次,B品牌一年坏1次,那么肯定B品牌的可靠性高。

可用性:定义为系统正常运行的时间占比,其计算公式是:Availability = MTBF/(MTBF + MTTR)。有趣的是,可用性只涉及“可修复故障”,为什么呢?对于不可修复的故障来说,只要坏了就废弃了,就不存在什么正常运行时间的比例这个说法了。

虽然可用性的公式比较简单,但是这个公式背后蕴含的信息不少,我们来看几个有趣的问题:

  1. 是不是可靠性高,可用性就高?
  2. 会不会可靠性高,可用性低?
  3. 会不会可靠性低,可用性高?

如果你认真对照可用性的公式,以及前面关于MTBF和MTTR的定义,相信你能够推导出这几个问题的答案至于具体的解释,你可以尝试自己思考一下,如果你有疑问,可以在评论里面回复。

最后再汇总一下几个关键点:

  1. MTTF用来衡量“不可修复故障”的元器件或者系统的“可靠性”(寿命),MTBF衡量“可修复故障”的元器件或者系统的“可靠性”(正常运行的时长)。
  2. MTBF不包含MTTR,MTBF也不等于MTTR + MTTF,而MTTR包含发现、定位、修复的时间。
  3. 可靠性的衡量指标是MTTF或者MTBF。
  4. 可用性的计算公式是Availability = MTBF/(MTBF + MTTR)。

MTTR、MTBF、MTTF、可用性、可靠性傻傻分不清楚?相关推荐

  1. linux看磁盘是sas还是sata吗,SAS和SATA硬盘傻傻分不清?看这里

    原标题:SAS和SATA硬盘傻傻分不清?看这里 互联网时代的来临,使得企业对存储的需求在增长,传统的硬盘也逐渐发展,而变化最大的就是接口.当前,按照接口的不同,机械硬盘主要可被分为SATA硬盘和SAS ...

  2. MTTR、MTTF、MTBF

    可用度计算错误分析: 原始计算逻辑: 1.获取业务下单主机的 已处理告警和未处理告警信息 2.获取已处理告警的平均处理时间 alreadyProcessedAVG = (告警处理时间最大值update ...

  3. UX、UI、 IA和IxD傻傻分不清

    UX.UI. IA和IxD傻傻分不清 UX.UI. IA和IxD傻傻分不清 在以前,一般所说的设计多半是指平面设计.随着数字时代的快速发展,涌现了一批新的职位,因此一些外行人士或者刚入行的人对设计相关 ...

  4. UE、UI、 IA和IxD傻傻分不清

    一直对这些分类搞不清,整理下,来源:https://www.zhihu.com/question/19742332/answer/132833171 <img src="htt ...

  5. MTBF、MTTR、MTTF是什么?

    MTBF(Mean Time Between Failures,平均故障间隔时间) 定义为失效或维护中所需要的平均时间,包括故障时间以及检测和维护设备的时间.对于一个简单的可维护的,MTBF = MT ...

  6. MTBF、MTTR、MTTF三个指标的区别在哪儿

    MTBF.MTTR.MTTF三个指标的区别 1.MTBF,全称是Mean Time Between Failure,即平均无故障工作时间.就是从新的产品在规定的工作环境条件下开始工作到出现第一个故障的 ...

  7. MTBF=MTTF+MTTR

    Mean Time Between Failure      --MTBF Mean Time To Repair            --MTTR Mean Time To Failure     ...

  8. 计算机及网络系统联调和试运行,别再傻傻分不清试运行、试运营和正式运营的区别了!...

    原标题:别再傻傻分不清试运行.试运营和正式运营的区别了! 随着轨道交通线路的不断建设与发展,不同线路试运行.试运营诸如此类字眼不断进入大众眼球.除一些在相关行业工作的小伙伴们比较清楚试运行.试运营以及 ...

  9. JS魔法堂:属性、特性,傻傻分不清楚

    一.前言 或许你和我一样都曾经被下面的代码所困扰 var el = document.getElementById('dummy'); el.hello = "test"; con ...

  10. ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]

    关于ASP.NET MVC对请求的处理方式(同步或者异步)涉及到的五个组件,在<上篇>中我们谈了三个(MvcHandler.Controller和ActionInvoker),现在我们来谈 ...

最新文章

  1. JavaScript提高:005:ASP.NET使用easyUI TABS标签显示问题
  2. 安装mamached数据库
  3. 渗透测试报告标准编写
  4. webpack之externals操作三部曲--正确的姿势
  5. 电子商务时代企业统计的发展方向
  6. 好看的个人qq主页-导航页源码
  7. Vue学习笔记--Vue双向绑定实现原理
  8. Android -- Camera.ShutterCallback
  9. python爬虫进程和线程的区别_Python爬虫 | 多线程、多进程、协程
  10. Cesium:地球中实现点击浮动弹窗
  11. 睡眠 应该用 a加权 c加权_?焦虑自测 ,看看你的焦虑程度到底有多深?是否影响睡眠?...
  12. 【原创】Mapped Statements collection does not contain value for DaoImpl.method
  13. 群晖NAS从入门到精通的所有帖子汇总,只要这一篇就够了
  14. JVisualVM初步使用
  15. 基于brctl工具搭建网桥
  16. MIMO天线市场深度研究分析报告
  17. IM的扫码登录功能如何实现?
  18. HTML中的锚点连接
  19. 5.18 对表格按行进行排序 [原创Excel教程]
  20. Bootstrap3基础 table-striped 表格实现隔行换色(浅灰色与白色交替)

热门文章

  1. 关闭idea任务栏小图标
  2. RS485通讯四路模拟量隔离采样模块的功能特点及应用
  3. 深入Tensorflow Embedding,解决Tensorboard无法显示PROJECTOR问题
  4. 腾达路由器dns服务器未响应,网速变慢,重启路由器有用吗?
  5. xp服务器文件写保护怎么删除,Xp系统磁盘被写保护无法复制文件解决方法
  6. (9)数据分析-相关性分析
  7. 最详细的Log4j使用教程
  8. 获取任意一个微信小程序码的两种方式
  9. 4.0版本的wed.xml。 中间的部分是配置springMVC的。
  10. ido 0.5 发布