作为服务端开发的同学,最常听到的一句话是你的接口有几个9?2个9?3个9?到底几个9才算是稳定呢?

今天我们就从系统可用性(Availability)开始,为你讲解开发过程中那些常用的指标名称。

1.系统可用性

1.1-什么是系统可用性

概念:在给定的时间间隔内,计算机系统处在可工作状态的时间比例。

这里重点关注2个名词:

  • 时间间隔:说明系统可用性是在指定的时间范围内进行统计的。

  • 可工作状态:这里引出了一个公式。即【系统可用性 = 系统正常运行时间(排除故障时间) / 系统总运行时间】

1.2-建立"系统可用性"的目的

一方面,系统可用性与SRE的建设目标强相关,SRE的建设目标就是尽量减少系统故障时间,提升系统可用性。

另一方面,系统可用性概念看似简单,但是没有一个固定的计算方式,需要你自己根据自己的系统进行定义。

2.衡量系统可用性的两种方式

目前,业界衡量系统可用性的方式主要有2种:

  • 时间纬度的系统可用性。

  • 请求纬度的系统可用性。

上述两个可用性的计算方式为:

  • 时间纬度的系统可用性:

Availability = 程序正常运行时间 / (程序正常运行时间 + 系统故障时间)
  • 请求纬度的系统可用性:

Availability = 成功请求数量 / 请求总数量

3.时间纬度的系统可用性

基于时间维度的系统可用性,其概念为:从时间纬度,来评估系统的正常运行时间及系统可用性。

时间维度的系统可用性,就是我们经常提起的X个9。

X个9表示以年/月/日等为单位,在指定的时间范围内,系统可以正常使用时间与总时间之比。 例如,我们以1年为时间单位,可以得出:

  • 3个9:(1-99.9%)36524=8.76小时,表示该系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。

  • 4个9:(1-99.99%)36524=0.876小时=52.6分钟,表示该系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。

  • 5个9:(1-99.999%)36524*60=5.26分钟,表示该系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。

根据如上的定义,我们可以总结出一张表格:

可用性等级 故障时间(以年为单位) 故障时间(以月为单位) 故障时间(以日为单位)
90% (1-90%)*365天 = 36.5天 (1-90%)*30天 * 24小时 = 72小时 (1-90%)*24小时= 2.4小时
99% (1-99%)*365天 = 3.65天 (1-99%)*30天 * 24小时 = 7.2小时 (1-99%)*24小时 * 60分钟= 14.4分钟
99.9% (1-99.9%)*365天 * 24小时= 8.76小时 (1-99.9%)*30天 * 24小时 * 60分钟= 43.8分钟 (1-99.9%)*24小时 * 60分钟= 1.44分钟
99.99% 以此类推 ... ...
99.999% ... ... ...

从上面的表格,我们也可以得出一个结论

  • 系统的99数越高,系统的可用性越高。

4.请求纬度的系统可用性

基于请求纬度的系统可用性定义相对比较简单。

例如,基于1000个请求,那么:

  • 系统可用性90%:表示1000个请求中允许1000 * (1- 90%) = 100个请求出错。

  • 系统可用性99%:表示1000个请求中允许1000 * (1- 99%) = 10个请求出错。

  • 系统可用性99.9%:表示1000个请求中允许1000 * (1- 99.9%) = 1个请求出错。

5.系统可用性目标建立需要考虑的因素

5.1-成本

系统可用性越高,对你的系统要求也越高,那么你付出的成本和代价也会越高。

对于可用性越高的系统,那么对于你服务器的存储、网络、软件等要求也就越高。

而对于一些服务并不需要达到那么高的可用性,因此就可以为这些服务设置较低的可用性目标。

5.2-业务容忍度

系统可用性也需要考虑业务的容忍度。

对于金融行业服务来说,任何一个请求的失败都有可能带来资金的损失,因此对于这类的服务,对于错误的容忍度是比较低的,也就要求系统可用性较高。

对于常用的社交软件而言,例如我们使用的评论区功能/弹幕功能,对于这些应用来说,即使请求一次失败也是 可以接受的,下次再请求成功就可以了。因此对于这些业务来说,业务容忍度较高,系统可用性不要求一定要很高。

6.总结

系统可用性:SRE口中的3个9,4个9...到底是个什么东西?相关推荐

  1. java SE8 和 jdk1.8的关系 java版本号

    java SE8 和 jdk1.8的关系 java版本号 JDK版本与发行时间 版本 名称 发行日期 JDK 1.0 Oak(橡树) 1996-01-23 JDK 1.1 none(无) 1997-0 ...

  2. native-maven-plugin与maven-nar-plugin配置

    native-maven-plugin与maven-nar-plugin不一样,不是同一个东西 一.下面讲解windows平台下,native-maven-plugin的使用: 1. vs环境变量设置 ...

  3. WmS详解(一)之token到底是什么?基于Android7.0源码

    做Android有些年头了,Framework层三大核心View系统,WmS.AmS最近在研究中,这三大块,每一块都够写一个小册子来介绍,其中View系统的介绍,我之前有一个系列的博客(不过由于时间原 ...

  4. 【壹刊】Azure AD(三)Azure资源的托管标识

    一,引言 来个惯例,吹水!???????????????????? 前一周因为考试,还有个人的私事,一下子差点颓废了.想了想,写博客这种的东西还是得坚持,再忙,也要检查.要养成一种习惯,同时这也是自我 ...

  5. 你应该学点哲学的20个理由:不为拥有深奥的思想,只为更好地生活

    利用先贤的智慧来解决现代生活的日常问题. 转载于 http://china.36kr.com/p/5223175?column=WORKPLACE 什么是哲学?是不是就是时不时让你能够蹦出一些高深莫测 ...

  6. 致创业者:你死的太快,是因为做的太慢

    文|曾响铃 来源|科技向令说(xiangling0815) 浩浩荡荡的创业大潮中,真正修成正果的人少之又少.有数据报告显示,2017年我国约有100万家中小企业倒闭,也就是平均每分钟就有2家企业关门. ...

  7. Android手机开发总结——Android核心分析

    导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...

  8. 水晶报表使用经验总结

    资料: Asp.Net中使用水晶报表(上) www.dotnet8.com  2002-9-6  DotNet吧 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯 ...

  9. CSDN社区关于水晶报表的讨论

    CSDN - 专家门诊 关闭窗口       主        题:  有关水晶报表的使用经验和资料总结,欢迎各位使用过水晶报表的同仁把自己在使用过程中的总结.经验.体会同大家共享!! 作       ...

最新文章

  1. 内存按字节编址,地址从A4000H到CBFFFH,共有多少个字节呢?
  2. 盘点Java框架常用的3大底层技术!
  3. WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)
  4. 《机器学习技法》---模型聚合
  5. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2
  6. 营收放缓、股价暴跌、高管离职,Facebook迎来至暗时刻?
  7. 备份不等于归档,在智能归档中备份资产!
  8. 数据返回nan_数据处理教程
  9. 随想录(fatfs的学习)
  10. C++中的内存分配new()
  11. Flutter进阶—简单平台插件实例
  12. Java设计模式之观察者模式(发布-订阅模式)
  13. 利用模板类型实现累加
  14. 全角半角英文字母及符号
  15. 一分钟快速把一篇论文后面的参考文献全部下载下来
  16. Spring @scheduled注解周期性执行超时任务对任务调度的影响分析
  17. k8s集群Canal的网络控制
  18. 基于Jquery实现登录功能的前端页面
  19. Android开发:编程实现界面定时刷新
  20. 抖音程序员HTML相册,快手抖音程序员表白女朋友3D立体相册源码html网页相册代码...

热门文章

  1. Ubuntu下安装Luma qq
  2. 开源!MatrixBench:实时物联网场景的数据压测“兵法秘籍”
  3. pygame中文文档 三
  4. php怎么魔方加密,深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助 [tihuan]...
  5. 爬虫 - 抓取52论坛帖子列表
  6. 数据库系统原理与设计——投影运算、选择运算
  7. 新出免费字体——阿里巴巴普惠字体(附安装使用教程)
  8. OCS认证有机含量标准
  9. CAD转换的时候,怎么快速在图纸转换成高质量的JPG格式?
  10. php swoole 视频直播_swoole如何实现直播