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

作为服务端开发的同学,最常听到的一句话是你的接口有几个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 质量运营体系建设与实践.pptx](https://wenku.csdn.net/doc/2d4nuybm8r?utm_source=wenku_answer2doc_content) 在当今的软件开发领域,构建一套有效的质量运营体系是确保软件系统稳定性和可用性的关键。为了深入理解如何结合SRE(Site Reliability Engineering,网站可靠性工程)理念来构建这样一个体系,我建议你查阅这份资源《腾讯 SRE 质量运营体系建设与实践.pptx》。它为你提供了腾讯在质量运营方面的真实实践和经验分享,是理解和学习如何构建质量运营体系的宝贵资料。 要建立一个有效的质量运营体系,首先需要定义质量目标并明确质量指标,例如系统的响应时间、错误率、故障恢复时间等。然后,基于这些指标,可以建立一个包括监控、自动化测试、持续集成、持续部署、故障管理、容量规划和性能优化在内的全面的质量运营流程。 在构建过程中,要注重自动化和智能化工具的使用,以及团队间良好的沟通和协作。特别是在监控和故障管理方面,自动化工具能够实时收集系统运行数据,并在出现异常时及时报警,而智能化的分析工具则可以帮助团队快速定位问题并制定解决方案。同时,团队间的密切配合能够确保问题发生时能够迅速响应,并有效地进行跨部门协调。 平衡开发效率与系统稳定性是构建质量运营体系的一大挑战。在实践中,可以通过引入DevOps文化,将开发和运维工作更紧密地结合在一起。通过持续集成和持续部署(CI/CD)流水线,可以在代码提交到生产环境之前进行更多的自动化测试,从而在不牺牲速度的情况下提升代码质量。 为了确保高质量的用户体验,重要的是要持续收集和分析用户反馈,并将这些信息纳入到产品开发和质量改进的流程中。此外,应用A/B测试和用户行为分析可以帮助我们更好地理解用户需求,并根据这些理解调整产品功能和服务。 在系统架构设计上,应考虑采用微服务架构,以实现更高的可用性和灵活性。同时,实施蓝绿部署或金丝雀发布策略可以进一步减少新版本发布时的风险。 总结来说,构建质量运营体系是一个系统工程,它涉及从理念到实践的全方位转变。《腾讯 SRE 质量运营体系建设与实践.pptx》将为你提供详尽的理论知识和实践案例,帮助你在此领域取得进一步的深入理解与提升。 参考资源链接:[腾讯 SRE 质量运营体系建设与实践.pptx](https://wenku.csdn.net/doc/2d4nuybm8r?utm_source=wenku_answer2doc_content)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值