1、系统稳定性的评判标准

在开始谈稳定性保障之前,我们先来聊聊业内经常提及的一个词SLA!业内喜欢用SLA (服务等级协议,全称:service level agreement)来衡量系统的稳定性,对互联网公司来说,就是网站与用户间定义的一种双方认可的协定。

我们平常经常看到互联网公司喊口号,我们今年一定要做到3个9、4个9,即99.9%、99.99%,甚至还有5个9,即99.999%。
9越多代表全年服务的可用时间,时间越长服务越可靠。就以一个标准99.99%为例,停机时间52.6分钟,平均到每周也就是只能有差不多1分钟的停机时间,也就是说网络抖动这个时间可能就没了。
服务稳定性计算标准一般都是,总的请求数-失败数 / 总请求数 ,比如100-5/100 = 95% ,下面列举了几个对应的停机时间。

1年 = 365天 = 8760小时3个999.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时4个999.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟5个999.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟

2、提高系统稳定性的意义

我认为这是一个非常重要的问题,我们费了那么多资源,投入了许多时间、精力为的是什么,揭高系统稳定性的意义究竟是什么?

  • 不是让公司多挣钱,而是让公司少损失钱!(电商类,交易类系统)
  • 提升用户对系统的使用感受,减少用户的流失(用户评价:顺畅、垃圾、再在也用了、用竞品)

3、提高系统稳定性的本质

  • MTTF (Mean Time To Failure,平均无故障时间),指系统无故障运行的平均时间,取所有从系统开始正常运行到发生故障之间的时间段的平均值。 MTTF =∑T1/ N
  • MTTR (Mean Time To Repair,平均故障修复时间),指系统从发生故障到维修结束之间的时间段的平均值。MTTR =∑(T2+T3)/ N
  • MTBF (Mean Time Between Failure,平均故障间隔时间),指系统两次故障发生时间之间的时间段的平均值。 MTBF =∑(T2+T3+T1)/ N

  • 可靠性:度量标准是平均故障间隔时间 (MTBF),即经过此间隔时间后组件出现故障并需要修复。提高可靠性需要强调减少系统故障的次数,即不出故障或尽可能的少出故障,即增加MTTF时间。
  • 可用性:量化指标是周期内系统无故障运行的总时间(MTTF)。提高可用性需要强调减少从灾难中恢复的时间,即减小MTTR时间。

系统稳定性的本质:就是提高可靠性和可用性,增加故障间隔时间(MTTF),减小故障修复时间(MTTR)从而保障业务连续性,减少业务损失。

4、提高系统稳定性认知陷阱

本节大概讲一下,我们在维护系统时的一些常见陷阱,以及我们如何提升我们的认知水平。

陷阱1:我的系统从来没有发生过事故,肯定不会出故障

连续性思维:通常人们认为过去、现在、未来是连续的,而现实世界是非连续的,连续性只是认知假设。人类的默认思维方式是归纳法,它的适用范围是在同一曲线内,没有突变。我们的系统是一个变化的系统,一旦前提假设不成立,从过去看未来的归纳总结就不再成立。
认知升级:认识到连续性思维的局限,转变为非连续性思维,解决思维固化

陷阱2:网络出问题了,基础设施出问题了,我也没办法呀,不是我的错

Design for failure(故障设计):我们的系统构建在硬件、操作系统等基础设施之上,依赖中间件、数据库、网络,依赖于三方系统,所有的这些都有可能失效,我们必须基于这些依赖都会失效进行设计。
认知升级:一切都可能失效,要考虑失效场景

陷阱3:我考虑了这些异常场景,做了专门设计,肯定没问题

故障演练验证:我们所有的设计是否有效,应该像物理学、化学一样,要得到验证,没有验证的东西都是

不可信的。我们要模拟故障场景,根据发生的概率和危害程度及后果进行可靠性设计验证、可用性设计验证,证明如我们期望的一样运行。
认知升级:设计是否有效,需要故障演练验

陷阱4:这个故障场景发生的可能性太低,应该不会发生

墨菲定律(Murphy’s Law):主要内容有四个方面:

  • 任何事都没有表面看起来那么简单;
  • 所有的事都会比你预计的时间长;
  • 会出错的事总会出错;
  • 如果你担心某种情况发生,那么它就更有可能发生。

墨菲定律的根本内容是指任何一个事件,只要具有大于零的机率,就不能架设它不会发生。
认知升级:担心发生的迟早会发生,杜绝侥幸心理

陷阱5:这几天报警数有点多,不过没有用户反馈,过几天再说

海恩法则:任何不安全事故都是可以预防的。海恩法则,是航空界关于飞行安全的法则。海恩法则指出:每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。

按照海恩法则分析,当一件重大事故发生后,我们在处理事故本身的同时,还要及时对同类问题的“事故

征兆”和“事故苗头”进行排查处理,以此防止类似问题的重复发生,及时解决再次发生重大事故的隐患,把问题解决在萌芽状态。

海恩法则强调两点:一是事故的发生是量的积累的结果;二是再好的技术,再完美的规章,在实际操作层面,也无法取代人自身的素质和责任心
认知升级:不要麻痹大意,事情会由量变到质变转换的

5、提高系统稳定性的具体方法

上面说了一大堆,又是标准,又是意义的,下面的才是干货,我以为自己的角度进行了一下归纳总结。

6、总结

系统就像一辆高速运行的汽车,随时都会有新的需求,新的问题在等着我们,我们不能让这个高速行驶的汽车停下来修复问题,所以我们只能在它运行的时候修复,这是一项风险很高的操作,所以需要我们在各个环节都做好了,才能保证它不出问题。要提高系统稳定性也不一朝一夕的事,是一个长期的过程,所以不要松懈,有问题及时解决。

本是后山人,偶做前堂客。醉舞经阁半卷书,坐井说天阔。写的不好敬请谅解!