来自:漫话编程

在一个阳光明媚的周二下午,我正在公司里面看着即将发布的Java 12的新特性,这时候女朋友打来电话。

晚上下班后,女朋友回到家里面和我说,发现淘宝无法访问的十几分钟后又可以了。

系统可用性

系统的可用性,英文名字为System Usability,即系统服务不中断运行时间占实际运行时间的比例。所以,可用性其实是一个百分比,如99.9%。

我们通常会听说一个词:高可用,其实指的就是高可用性。高可用指的就是系统服务不中断运行时间占实际运行时间的占比更大。

要了解可用性,躲不开的三个体现系统可用性的重要指标:MTTR、MTTF、MTBF

MTTF 即 Mean Time To Failure,中文为:平均无故障时间。指系统无故障运行的平均时间,取所有从系统开始正常运行到发生故障之间的时间段的平均值。

MTTR 即 Mean Time To Repair,中文为:平均修复时间,指系统从发生故障到维修结束之间的时间段的平均值。

MTBF 即 Mean Time Between Failure,中文为:平均失效间隔,指系统两次故障发生时间之间的时间段的平均值。

上图,就是一张可以提现三者之间关系的图。可以看出:

MTBF = MTTF + MTTR

按照以上概念,那么系统的可用性指的其实就是:MTTF / MTBR * 100%MTTF / ( MTTF + MTTR ) * 100%

在实际的情况中,很多系统都是由若干个子系统组成的,那么整个系统的可用性到底该如何计算呢?我们接着来了解下系统结构。

对于串联系统:


对于并联系统:

对于组合系统:

可用性的衡量

衡量系统的高可用性,一般通过SLA,全称Service Level Agrement,也就是有几个9的高可用性。我们经常可以看到很多公司会宣称自己的系统可以达到99.99%、99.999%等。

工业界通常通过统计故障发生到恢复的时间的方法来测量SLA。一般以年度为单位,统计一年内的系统不可用总时长。具体对应关系如下表:

墨菲定律说 “会出错的事总会出错”,可用性做到 100 是可望而不可及的。

对于 SLA 指标来说,9 的数字越多可用性越高,宕机时间越少,系统就可以在给定的时刻内高比例地正常工作。然而对系统的挑战就越大,投入的成本也会越高。比如 5 个 9 要求系统每年只宕机 5 分钟左右,而 4 个 9 要求每年宕机时间不超过一个小时。这就使得系统需要在设计、基础设施、数据备份等不同层面采取多种方式,甚至增加基础设施投资来保证可用性。

“当你的设备处理人命关天的事情,或业务中断一分钟就会损失百万美刀,那么你可以考虑 99.99% 的可靠性。” Robertson(Linux 高可用项目开发者)

不同系统的可用性要求也是不同的,比如:淘宝、京东等这些电商系统用户量很多,不同区不同时刻都有大量的用户在使用系统,这必然对系统的可用性要求很高。

据以往这些系统的故障统计和不准确地测试数据推测,它们目前的可用性是在 3 个 9 到 4 个 9 左右。相对而言,企业类的工作软件因为通常只在工作时间被使用,或只在某些特定的地区使用,或只给某部分人某一特定时间使用,可用性的需求就会低一些。

可用性的保障

影响可用性的因素有很多,包括系统故障、基础设施故障、数据故障、安全攻击、系统压力等等。

可用性的保障涉及到很多层面,其中包括但不限于了:

  • 软件的设计、编码、测试、上线和软件配置管理的水平

  • 工程师的人员技能水平

  • 运维的管理和技术水平

  • 数据中心的运营管理水平

  • 依赖于第三方服务的管理水平

  • 对待技术的态度

  • 一个公司的工程文化

  • 领导者对工程的尊重

下面的表格里,列出了高可用常见的问题和应对措施。


保障系统的高可用,并不是一个简单的事情,上表中列举的也只是其中一部分方法论,真正的保证高可用,还是需要大量实践的!

参考资料:

https://blog.csdn.net/hexieshangwang/article/details/49126159

https://dev.to/fangdajiang/-abilities-8e1

https://www.oracle.com/technetwork/cn/community/developer-day/7-critical-busi-sys-solution-360101-zhs.pdf

https://coolshell.cn/articles/17459.html

https://blog.csdn.net/hustspy1990/article/details/78008324

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

漫话:如何给女朋友解释什么是系统可用性?相关推荐

  1. 漫话:如何给女朋友解释什么是系统可用性? | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 转自:漫话编程 在一个阳光明媚的周二下 ...

  2. 漫画:如何给女朋友解释什么是系统可用性?| 技术头条

    本文经授权转载自漫话编程(ID:mhcoding) 前阵子淘宝挂了后,女朋友回到家里面和我说,发现淘宝无法访问的十几分钟后又可以了. 系统可用性 系统的可用性,英文名字为System Usabil ...

  3. 漫话:如何给女朋友解释什么是3PC?

    一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如何给女朋友解释什么是2PC(二阶段提交)?>中介绍过关于2PC的知识,要不然这事儿可 ...

  4. 漫话:如何给女朋友解释什么是适配器模式?

    本文经授权转载自微信公众号:漫话编程 周末窝在家里面打王者荣耀,女朋友在旁边玩我的电脑,我嫌她播放的综艺节目声音比较大,于是建议她戴耳机. 适配器模式 Adapter Pattern,通常被翻译成适配 ...

  5. 漫话:如何给女朋友解释什么是BIO、NIO和AIO?

    本文经授权转载自微信公众号:漫话编程 周末午后,在家里面进行电话面试,我问了面试者几个关于IO的问题,其中包括什么是BIO.NIO和AIO?三者有什么区别?具体如何使用等问题,但是面试者回答的并不是很 ...

  6. java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...

    2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机.看了一会之后她突然问我一些很奇怪的问题. 于是我拿过他的手机,看到了下面这一幕: 这是微信官方出的公众号管理 ...

  7. 漫话:如何给女朋友解释什么是 3PC?

    作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 责编 | 胡巍巍 一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如 ...

  8. 漫话:如何给女朋友解释什么是语法糖?

    语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家Peter J. Landin发明的一个技术术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响, ...

  9. 漫话:如何给女朋友解释为什么吴某凡会被中间人攻击?

    中间人攻击 中间人攻击(Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们 ...

最新文章

  1. 3次握手中的最后一个ACK服务端收到了吗
  2. hibernate主配置文件的配置
  3. 开源最大的谎言是什么?
  4. 欧氏空间内积定义_泛函分析笔记3:内积空间
  5. eclipse集成python插件
  6. 解决博客园中代码着色问题
  7. 【POJ1328】Radar Installation(贪心,决策包容)
  8. 解决TIME_WAIT造成的服务器无法访问
  9. mysql5.7主从复制_MySQL 5.7.18的安装及主从复制(主从同步)
  10. 美团架构师带你深入理解Nginx模块开发与架构解析
  11. 基于手写数字识别的FGSM
  12. 计算机音量控制器打不开,我的电脑打不开音量控制器.怎么办?
  13. 查看APK文件源代码
  14. 新功能!微信可以开“小号”了
  15. CentOS 7 校对时间 修改时区
  16. 外贸工具WhatsApp
  17. HNOI 2015 【亚瑟王】
  18. 笔记本上开启小键盘的快捷键
  19. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV
  20. excel整列动态联动下拉_在Excel下拉列表中显示多列

热门文章

  1. 第1关:最长非降子序列(非连续)问题
  2. poj2154(Polya+欧拉函数优化模版)
  3. [NC15034]德玛西亚万岁
  4. 2019 ICPC EC Finals C. Heretical … Möbius(中国剩余定理,序列检验)
  5. 解题报告(二)C、(darkBZOJ 2194) 快速傅立叶之二(FFT、卷积的概念、常用变换)
  6. c++ 调用labview_LabVIEW面向对象编程_初窥门径(5):开发方式漫谈
  7. mysql运行正确结果显示_以下代码执行的结果是()
  8. android xposed 编译,Xposed修改特征编译
  9. 我在兰亭这三年之第一个项目
  10. 关于“编程的本质”的探讨