谈一谈软件系统的可用性

本文探讨了软件系统的可用性,通过MTBF(平均无故障工作时间)和MTTR(平均修复时间)来衡量。指出高可用性并不一定意味着系统优秀,必须同时考虑可靠性。提升可用性主要通过提升MTBF和降低MTTR,包括提高系统质量和实施冗余策略。故障恢复时间的降低经历了从被动发现到智能运维的演进,未来有望实现更多自动化。

什么是可用性

系统的可用性用如下公式表示:

Availability=(MTBF/(MTBF+MTTR))*100%

其中:

  • MTBF:即平均无故障工作时间,英文全称是“Mean Time Between Failure”。是衡量一个产品(尤其是电器产品)的可靠性指标。单位为毫秒、秒钟、分钟、小时等
  • MTTR:平均修复时间(Mean time to repair,MTTR),是描述产品由故障状态转为工作状态时修理时间的平均值。产品的特性决定了平均值的长短。单位为毫秒、秒钟、分钟、小时等

互联网和软件行业写入SLA中的可用性就是在特定周期内的可用性,一般用几个9表示。这个周期一般跟计费周期相关,譬如包月资源周期定为一个月,下表以年为周期:

可用性年不可用时间
90%t=365day*24h*60min*60s*(1-0.9)=315,3600s=36.5day
99%t=365day*24h*60min*60s*(1-0.99)=315,360s=87.6h
99.9%t=365day*24h*60min*60s*(1-0.999)=31,536s=8.76h
99.99%t=365day*24h*60min*60s*(1-0.9999)=31,536s=52.56min
99.999%t=365day*24h*60min*60s*(1-0.99999)=31,536s=5.256min
99.9999%t=365day*24h*60min*60s*(1-0.999999)=31,536s=31.536s

那是不是Availability越高系统就越好呢?答案是:不一定,看下面两个

  • 有一个系统,MTBF=2h,MTTR=5s,即可以稳定运行2小时,然后挂掉,5秒钟之后又恢复了,通过公式计算Availability=0.9999768,约等于5个9
  • 另一个系统,MTBF=30day,MTTR=1h,即可以稳定运行30天,然后挂掉,1小时之后恢复,通过公式计算Availability=0.9986130,约等于4个9

能说这两个系统都很好吗?答案是:不能

能说第一个系统好于第二个系统吗?答案还是:不能

因为:系统的可靠性和可用性同等重要,只谈其一,没有意义

如何提升可用性

从公式可以看出,提升可用性有两个方向,分别是:

  1. 提升MTBF,即提升系统可靠性
  2. 降低MTTR,即减小故障恢复时间

提升可靠性

提升系统可靠性,有两个大方向:

  1. 提升系统质量,让系统能够长时间稳定运行,这是最容易想到却最不容易做到的
  2. 并联或者冗余,让系统对外提供长时间稳定运行的能力,但内部允许故障,只要保证同一时间至少一个实例正常运行即可。受益于摩尔定律,计算机系统需要的硬件设备越来越便宜,开发和维护成本占比越来越高,并联或者冗余的方案成为提升可靠性的主流

降低故障恢复时间

降低故障恢复时间,分阶段有多重手段来实现,大致如下:

  1. 原始阶段。用户使用系统功能时发现不可用,经投诉反馈渠道知会到相关人员,由运维人员恢复故障,这个阶段的主要特点是:被动发现,用户体验极差
  2. 手工阶段。专人定时巡检,发现故障后及时知会运维人员修复,这个阶段的主要特点是:主动发现、发现不及时、修复不及时
  3. 自动发现。专门的系统监控所有组件,一旦发现故障,告警知会运维人员修复,这个阶段的主要特点是:主动发现、发现及时、修复不及时
  4. 智能运维。一套智能系统监控所有组件,发现故障后自动调整系统,例如隔离故障实例启动新实例进行替换、自动扩缩容适应负载变化等,这个阶段的主要特点是:智能运维、无人值守

我始终相信:随着技术的不断发展,脏活、累活终究都会变成机器的活儿

参考链接

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值