我们在评估一个系统的可用性和可靠性时,一般都会说三个9,四个9之类的。这些一般都是说系统的SLA(Service Level Agreement) 具体是几个「9」,以此,来表示该系统一年中具体宕机的时间。
那这几个9是怎么计算出来的,具体一个系统可用性和可靠性又有哪些方面考虑呢?

以下是朋友推荐的一篇很棒的英文文章,我做了翻译。

系统可用性

系统可用性是通过将系统建模为串联和并联的组件来计算的。以下规则用于确定系统是串联的还是并联的:

  • 如果组件的失效导致组合变得不可操作,则认为这两个部件是串联操作的

  • 如果组件的故障导致另一部件接管故障部件的操作,则认为这两部件并行操作。

串行的可用性

如上图所示,两个组件 X 和 Y,如果有一个出问题导致整个组合都不可用,就认为 X 和 Y 这两个组件是串联的。只有组件 X 和组件 Y 同时可用时,整个组合才可用。由此可见,组合的可用性是这两部分的乘积,公式如下:

A = AAy

从上面的等式我们看出,串联系统中,整体组合的可用性,总是低于单个组件的可用性。

对于上面 X 和 Y 两个串联组件,可用性如下:

Component Availability Downtime
X 99% (2-nines) 3.65 days/year
Y 99.99% (4-nines) 52 minutes/year
X 和 Y 组合 98.99% 3.69 days/year

从上面的表中,我们看到,即使使用了非常高可用性的组件Y,但组合系统仍然受组件 X 的影响,会降低好多,和「木桶原理」一致,都受最短板的影响。

并行的可用性

如上图所示,如果两个组件都失败时,整个系统会失败的话,这两个组件会被认为是并行的。任一组件可用时,整个系统都是可用的。整体可用性是 1- (两个组件都不可用),公式如下:

A = 1-(1-A)2

从上面我们能看出,两个组件并行的系统,整体可用性要任一单独的组件可用性高。如上图假设是组件X的两个部分,可用性如下:

Component Availability Downtime
X 99% (2-nines) 3.65 days/year
Two X components operating in parallel 99.99% (4-nines) 52 minutes/year
Three X components operating in parallel 99.9999% (6-nines) 31 seconds /year !

我们看到,即使一个可用性低的组件X,组合后的系统可用性也很高。

可用性计算举例

了解系统

第一步,我们先准备一个系统的详细框图。该系统由输入传感器组成,该传感器接收信号并将其转换为适合信号处理器的数据流。输出会送到两个冗余的信号处理器。源信号处理器用于输入,备用信号处理器忽略来自输入换能器的数据。备用处理器监控主信号处理器的健康状态。两个信号处理器的输出被组合并发送到输出转换器。再次,有源信号处理器驱动数据线。待机使数据线保持不变。输出传感器将信号输出到外部。

系统可靠性

第二步是准备系统的可靠性模型。在这个阶段,我们决定系统的并行和串行连接。我们的示例系统的完整可靠性模型如下:

这里要注意的几个要点是:

  • 信号处理器的硬件和软件已经被建模为两个不同的实体。软件和硬件是串联的,因为如果硬件或软件不工作,信号处理器就不能工作。

  • 两个信号处理器(软件+硬件)结合在一起,形成信号处理复合体。在信号处理复合体中,两个信号处理复合体被并行放置,因为当信号处理器之一失效时,系统可以工作。

  • 输入传感器、信号处理复合体和输出传感器被串联放置,因为三个部件中的任何一个的失效都将导致系统的完全失效。

计算单个组件的可用性

第三步包括计算单个组件的可用性。MTBF(Mean time between failure 故障之间的平均时间)和MTTR(Mean time to repair 修复的平均时间)值针对每个组件进行估计。对于硬件组件,MTBF信息可以从硬件制造商的数据表中获得。如果硬件是在内部开发的,则硬件组将为板提供MTBF信息。对硬件的MTTR估计基于操作员对系统的监视程度。这里我们估计大约2小时的硬件MTTR。

一旦已知MTBF和MTTR,就可以使用以下公式来计算组件的可用性:

评估软件的MTBF 这个活儿还是比较费劲的。软件MTBF实际上是软件重新启动的时间。中间的间隔可以用系统的缺陷率来估计。在这里,我们估计MTBF大约是4000小时。MTTR是重新启动失败处理器的时间。我们的处理器支持自动重启,所以我们估计软件MTTR大约5分钟。请注意,5分钟似乎是在更高的一面。但MTTR应包括以下内容:

  • 由于信号处理器软件崩溃而中止的活动中浪费的时间

  • 检测信号处理器故障的时间

  • 失败的处理器重新启动并返回服务时所花费的时间

Component MTBF MTTR Availability Downtime
Input Transducer 100,000 hours 2 hours 99.998% 10.51 minutes/year
Signal Processor Hardware 10,000 hours 2 hours 99.98% 1.75 hours/year
Signal Processor Software 2190 hours 5 minute 99.9962% 20 minutes/year
Output Transducer 100,000 hours 2 hours 99.998% 10.51 minutes/year

从上面表格我们看到

  • 即使硬件MTBF更高,软件的可用性也更高。主要原因是软件的MTTR要低得多。换句话说,软件确实经常失败,但是恢复很快,因此对系统可用性的影响较小。

  • 输入和输出传感器具有相当高的可用性,因此即使在没有冗余组件的情况下也能够实现相当高的可用性。

计算系统可用性

最后一步是计算整个系统的可用性。这些计算是基于串行和并行可用性计算公式。

Component Availability Downtime
Signal Processing Complex (software + hardware) 99.9762% 2.08 hours/year
Combined availability of Signal Processing Complex 0 and 1 operating in parallel 99.99999% 3.15 seconds/year
Complete System 99.9960% 21.08 minutes/year

怎么做到更多的9

每个公司对几个9的定义都不一样,好多的互联网公司要求都是99.99。像一些事业单位网站,办事网站等,经常故障服务不可用,估计最高也就到99.9。

如果我们提供的服务可用性越低,意味着造成的损失也越大,别的不说,如果是特别重要的时刻,或许就在某一分钟,你可能就会因服务不可用而丢掉一笔大的订单,这都是始料未及的。所以,只要尽可能的提升SLA可用性才能最大化的提高企业生产力。

要做到更多的9,就需要监控自己的服务,在服务出现异常或者宕机的时候,能及时恢复。增加冗余,防止出现问题。

如果觉得有用,欢迎分享到朋友圈给更多的人。

相关阅读

怎样努力才能成为一名 Java Champion

MyBatis 这小子是怎样拿到 insert 时生成的主键的?

对于WEB应用安全,我too young了

如果你喜欢本文

请长按二维码关注

转发朋友圈,是对我最大的支持。

更多精彩内容:

一台机器上安装多个Tomcat 的原理(回复001)

监控Tomcat中的各种数据 (回复002)

启动Tomcat的安全机制(回复003)

乱码问题的原理及解决方式(回复007)

Tomcat 日志工作原理及配置(回复011)

web.xml 解析实现(回复 012)

线程池的原理( 回复 014)

Tomcat 的集群搭建原理与实现 (回复 015)

类加载器的原理 (回复 016)

类找不到等问题 (回复 017)

代码的热替换实现(回复 018)

Tomcat 进程自动退出问题 (回复 019)

为什么总是返回404? (回复 020)

...

PS: 对于一些 Tomcat常见问题,在公众号的【常见问题】菜单中,有需要的朋友欢迎关注查看

感觉有用,就点赞、转发支持一把吧,谢谢????

怎样计算系统的可靠性和可用性是几个9?相关推荐

  1. mysql判断可用性,MySQL -- 主從復制的可靠性與可用性

    主庫A執行完成一個事務, 寫入binlog ,記為 T1 然后傳給從庫B,從庫B 接收該binlog ,記為 T2 從庫B執行完成這個事務,記為 T3 同步延時: T3-T1 同一個事務,在 從庫執行 ...

  2. 内存的可靠性、可用性和诊断功能(内存RAS)

    内存的可靠性.可用性和诊断功能(内存RAS) RAS - Reliability, Availability and Serviceability Reliability: 可靠性.指的是系统必须尽可 ...

  3. 主动攻击与被动攻击的区别以及可靠性、可用性、保密性、完整性、不可抵赖性、可控性等的概念

    主动攻击与被动攻击的区别 一 .被动攻击 被动攻击即窃听,是对系统的保密性进行攻击,如搭线窃听.对文件或程序的非法复制等,以获取他人的信息.被动攻击又分为两类:一类是获取消息的内容,很容易理解;另一类 ...

  4. 软考 - 可靠性和可用性

    可靠性 系统在给定时间间隔内和给定条件下无失效运行的效率: 可用性 软件特定使用环境下为特定用户提供特定功能时具有的有效性:

  5. 一台服务器的可靠性能是,如何增强服务器内存的可靠性和可用性?

    [51CTO独家译文]由于大家的注意力大多集中在服务器的处理能力.网络带宽和存储IOPS(每秒输入输出操作)上,所以很容易忽视服务器内存的可用性和可靠性.虽然处理器是任何服务器的核心部件,但是工作负载 ...

  6. 国内外可信计算技术发展概况(转载1)

    -武汉大学计算机学院(Thursday, March 1, 2007 7:56 AM) 张焕国 罗捷 朱智强 摘要:可信计算是信息安全领域的一个新分支.本文论述了可信计算技术与理论的最新研究进展.通过 ...

  7. GitHub的DGit改进了平台的可靠性、性能以及可用性

    GitHub最近悄悄地发布了DGit,全称为"分布式Git".这是一种基于Git创建的分布式存储系统,其目标是改进使用GitHub时的可靠性.可用性以及性能. \\ DGit是一个 ...

  8. 数据和计算系统如何容错?

    容错是大规模数据系统和计算系统的必备功能,不能容错的分布式系统基本没有可用性.大家可能觉得高质量的系统错误率没有那么高,实质上系统的故障率总是随着系统规模和复杂程度增加.笔者读书的时候曾经听过一位参与 ...

  9. oss可用性_对象存储OSS详解

    阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.您可以通过调用 API,在任何应用.任何时间.任何地点上传和下载 ...

最新文章

  1. iOS11正式推出,第一批AR应用上线App Store!
  2. 【计算机网络】数据链路层 : 差错控制 ( 纠错编码 | 海明码 | “海明码“ 原理 | “海明码“ 工作流程 | 确定校验啊位数 | 确定校验码和数据位置 | 求校验码值 | 检错纠错 )★
  3. 74芯片引脚真值表汇总
  4. 【机器视觉】 continue算子
  5. 神舟六号的投入产出比:1比12
  6. 自己实现一些JQuery插件-----------------------------------(一)
  7. 俄罗斯为何把微积分下放到中学讲授?
  8. linux删除第二列为空_Linux之基本文本处理工具(二)
  9. word修订模式怎么彻底关闭_标书制作靠它准没错!那些你不知道的Word技巧大全...
  10. 剑指offer面试题[64]-数据流中的中位数
  11. java循环写出多个jlabel_java – 允许多个JLabel中的文本重叠
  12. android外设按键,Android 外接键盘的按键处理 .
  13. 机器学习项目中不可忽视的一个密辛 - 大数定理、中心极限定理
  14. Python flask实战订餐系统微信小程序-16后台管理系统其他页面调整
  15. github加速神器
  16. Altium designer (AD)中如何设置区域规则和器件规则
  17. vue全家桶_vue脚手架
  18. 对菜鸟开发者的叮咛:花一万个小时练习 Coding,不要浪费一万小时无谓地 Debugging
  19. iOS真机调试TestFlight安装及提交App Store审核教程
  20. 第二十九章 SQL函数 COALESCE

热门文章

  1. STM32F4设置NVIC中断优先级分组
  2. 深度学习应用在图像分割上的网络模型概述
  3. 一个匹配 以指定字符开头,指定字符结尾,中间内容任意的正则表达式
  4. 软件测试工作流程概括及总结(建议收藏)
  5. uwsgi2.0.2 安装及自启动
  6. 如何在浏览器中运行Linux程序,在linux自定义协议,让浏览器可以调用本地程序...
  7. HDU 1019 Least Common Multiple-数论(最小公倍数)
  8. 基于物化视图创建分区(分区的物化视图)
  9. 史上最简单的springcloud微服务入门实例,满足企业日常需求,开箱即用,工资翻倍不是梦...
  10. c#遍历字典并删除元素