点击上方“Java后端技术”,选择“置顶或者星标”

你关注的就是我关心的!

作者:侯树成

微信公众号:Tomcat那些事儿(ID:tomcat0000)

我们在评估一个系统的可用性和可靠性时,一般都会说三个9,四个9之类的。这些一般都是说系统的SLA(Service Level Agreement) 具体是几个「9」,以此,来表示该系统一年中具体宕机的时间。

那这几个9是怎么计算出来的,具体一个系统可用性和可靠性又有哪些方面考虑呢?

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

一、系统可用性

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

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

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

1.1、串行的可用性

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

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

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

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

1.2、并行的可用性

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

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

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

二、可用性计算举例

2.1、了解系统

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

2.2、系统可靠性

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

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

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

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

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

2.3、计算单个组件的可用性

第三步包括计算单个组件的可用性。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应包括以下内容:

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

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

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

从上面表格我们看到:

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

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

2.4、计算系统可用性

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

三、怎么做到更多的9

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

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

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

热门内容:

1、一位 70 后程序员的 26 个职场感悟

2、IDEA的这八条配置你一定要改!

3、老板让我不改一行代码,定位线上性能问题!

4、什么样的简历不会被丢进回收站!

5、刷完500道高频面试题,我能去面试大厂了吗?

6、没错,老板让我写了个BUG!

7、想通关分布式系统「限流问题」?只要这一篇!

8、微服务为什么一定要上Docker?

你的系统可靠性和可用性是几个9?相关推荐

  1. 澄清大数据存储——系统集成商篇

    大数据考验整合能力 大数据在带来新的商机和用户的同时,也带来了诸多挑战. 大数据存储主要考验的是技术整合能力和资源整合能力. 大数据是一项持久的工程,也是一个不断迭代的过程,不能一蹴而就. 业务集中在 ...

  2. 理解 UDDI(统一描述、发现和集成)

    本文来自IBM [导读]统一描述.发现和集成(Universal Description, Discovery, and Integration,UDDI)项目继续丰富企业用于在 UDDI 业务注册中 ...

  3. 加速SaaS规模化演进,餐道基于K8s的云上创新底座

    作者|溪洋.蔡金辉 审核&校对:溪洋.海珠.叶仔 编辑&排版:雯燕 摘要:餐饮正在成为数智化转型在实体经济运用中的最大试验场,推动着 SaaS 演进为餐饮行业新的基础设施.作为国内最早 ...

  4. 并行数据库 分布式数据库

    既然决定以后会做与数据相关的研究,就先趁着暑假多了解一点知识!大三下学期刚刚学习了数据库原理!趁热打铁! 目前对提高数据库性能和可用性出现了并行数据库和分布式数据库~ 并行数据库(parallel d ...

  5. 后台系统可扩展性学习笔记(一)概要

    文章目录 系统大致架构 可扩展性 负载均衡器与会话保持 引入冗余增强系统可用性 缓存减轻数据库压力 异步处理 参考 系统大致架构 当一个用户请求从客户端出发,经过网络传输,达到 Web 服务层,接着进 ...

  6. 阿里云对数据可靠性保障的一些思考

    背景 互联网时代的数据重要性不言而喻,任何数据的丢失都会给企事业单位.政府机关等造成无法计算和无法弥补的损失,尤其随着云计算和大数据时代的到来,数据中心的规模日益增大,环境更加复杂,云上客户群体越来越 ...

  7. CloudStack学习-3

    此次试验主要是CloudStack结合openvswitch 背景介绍 之所以引入openswitch,是因为如果按照之前的方式,一个网桥占用一个vlan,假如一个zone有20个vlan,那么岂不是 ...

  8. TableStore:爬虫数据存储和查询利器

    TableStore是阿里云自研的在线数据平台,提供高可靠的存储,实时和丰富的查询功能,适用于结构化.半结构化的海量数据存储以及各种查询.分析. 爬虫数据特点 在众多大数据场景中,爬虫类型的数据非常适 ...

  9. 北语18春《计算机网络技术》作业4,北语18春《计算机网络技术》作业4

    ---------------------------------------------------------------------------------------------------- ...

  10. 北工大计算机网络基础期末考试,2013北工大计算机网络应用复习提纲整理版.doc...

    复习提纲 计算机网络发展的四个阶段及每个阶段的特征 第一阶段:面向终端的计算机网络 由于终端没有独立处理数据的能力,因此并不是真正意义上的计算机网络.但在这个阶段中,逐步开始了计算机技术与通信技术相结 ...

最新文章

  1. 列子御风 大道至简 心诚天人合一
  2. winpython使用教程-winpython是什么
  3. python如何读取txt文件-如何在python中读取文件夹中的txt文件列表
  4. abstract class和interface的区别
  5. Software Defined Networking(Week 2, part 2)
  6. php公众号失物招领系统,【服务】微信公众平台『失物招领』功能上线
  7. 学生管理系统IPO图_图书管理系统开发背景和意义
  8. 【数学建模】论文模板和latex模板
  9. 软件测试工程师常用网站整理汇总
  10. java voip 的sip服务器搭建_用ASTERISK搭建自己的免费VOIP服务器
  11. GPS设备获取的坐标转换成百度或者高德坐标
  12. 图片alt标签是什么?如何优化Alt标签
  13. vbox vdi磁盘注册_克隆Virtualbox的vdi硬盘 和 修改uuid
  14. 杭电oj刷题(2099)
  15. idea设置java运行内存,IntelliJ IDEA 修改内存大小,使得idea运行更流畅(二)
  16. 水果店圈子:怎么做好水果店线上营销方案,水果店线上如何做
  17. 094 chrome浏览页面常用快捷键
  18. 中国大学moocpython答案查询_python,中国大学MOOC(慕课)答案公众号搜题
  19. alpha测试和beta测试的区别 .
  20. TCP协议的通讯流程

热门文章

  1. 迅雷xware android,迅雷固件Xware
  2. sklearn.metrics.accuracy_score/precision_score/recall_score、micro/macro/weighted(准确率、召回率)
  3. 普通话-命题说话11-20
  4. 2022危险化学品经营单位主要负责人考试题库及在线模拟考试
  5. 杰出人士的七种共性之7-独孤求败
  6. 网吧还原软件测试简历,测试人员-斯普林网吧客户服务系统.doc
  7. 车林通购车之家--购车计算器模块--贷款
  8. linux SFTP用户创建 不允许用户登录,并且连接只允许在制定的目录下进行操作
  9. php阴阳万年历转换的接口,用PHP写的阴阳万年历_PHP
  10. java 订单减库存_订单和库存处理方案