如上图所示,两个组件 X 和 Y,如果有一个出问题导致整个组合都不可用,就认为 X 和 Y 这两个组件是串联的。只有组件 X 和组件 Y 同时可用时,整个组合才可用。由此可见,组合的可用性是这两部分的乘积,公式如下:
A = Ax Ay
从上面的等式我们看出,串联系统中,整体组合的可用性,总是低于单个组件的可用性。
对于上面 X 和 Y 两个串联组件,可用性如下:
从上面的表中,我们看到,即使使用了非常高可用性的组件 Y,但组合系统仍然受组件 X 的影响,会降低好多,和「木桶原理」一致,都受最短板的影响。
并行可用性
如上图所示,如果两个组件都失败时,整个系统会失败的话,这两个组件会被认为是并行的。任一组件可用时,整个系统都是可用的。整体可用性是 1- (两个组件都不可用),公式如下:
A = 1-(1-Ax )2
从上面我们能看出,两个组件并行的系统,整体可用性要任一单独的组件可用性高。如上图假设是组件 X 的两个部分,可用性如下:
我们看到,即使一个可用性低的组件 X,组合后的系统可用性也很高。
X 个 9
说完了可用性的计算后,总算是回到本文的重点了,有个衡量其可靠性的标准——X 个 9,X 个 9 表示在系统 1 年时间的使用过程中,系统可以正常使用时间与总时间(1 年)之比,我们通过下面的计算来感受下 X 个 9 在不同级别的可靠性差异。
- 3 个 9:(1-99.9%) × 365 × 24=8.76 小时,表示该系统在连续运行 1 年时间里最多可能的业务中断时间是 8.76 小时。
- 4 个 9:(1-99.99%) × 365 × 24=0.876 小时=52.6 分钟,表示该系统在连续运行 1 年时间里最多可能的业务中断时间是 52.6 分钟。
- 5 个 9:(1-99.999%) × 365 × 24 × 60=5.26 分钟,表示该系统在连续运行 1 年时间里最多可能的业务中断时间是 5.26 分钟。
那么 X 个 9 里的 X 只代表数字 3~5,为什么没有 1~2,也没有大于 6 的呢?我们接着往下计算:
- 1 个 9:(1-90%) × 365=36.5 天
- 2 个 9:(1-99%) × 365=3.65 天
- 6 个 9:(1-99.9999%) × 365 × 24 × 60 × 60=31 秒
可以看到 1 个 9 和、2 个 9 分别表示一年时间内业务可能中断的时间是 36.5 天、3.65 天,这种级别的可靠性或许还不配使用“可靠性”这个词;而 6 个 9 则表示一年内业务中断时间最多是 31 秒,那么这个级别的可靠性并非实现不了,而是要做到从“5 个 9” 到“6 个 9”的可靠性提升的话,后者需要付出比前者几倍的成本。
可用性 A | X 个 9 | 停机时间(分钟) | 适用产品 |
---|---|---|---|
0.999 | 3 个 9 | 500 | 电脑或服务器 |
0.9999 | 4 个 9 | 50 | 企业级设备 |
0.99999 | 5 个 9 | 5 | 一般电信级设备 |
0.999999 | 6 个 9 | 0.5 | 更高要求电信级设备 |
怎么做到更多的 9?
每个公司对几个 9 的定义都不一样,好多的互联网公司要求都是 99.99。像一些事业单位网站,办事网站等,经常故障服务不可用,估计最高也就到 99.9。
而我们经常用到所谓 4 个 9 或者 5 个 9,也就是 99.99%与 99.999%。虽然这两者的差距是 0.009%,还不到 0.01%。但对于系统而言,恰恰是这不到 0.01%的差距,决定了系统完全不在一个档次上。
我们知道一个系统的可靠性并不完全取决于硬件,而由软件和硬件共同来决定,如果是软件问题,就需要监控自己的服务,在服务出现异常或者宕机的时候,能及时恢复。增加冗余,防止出现问题。
但是要提高系统的可靠性,除软件外,还有硬件的部分,包括网络、服务器以及存储设备等。其中,网络可以借助多运营商接入来解决,存储有 RAID、快照等应对技术,通过备份来提高数据安全性。对于服务器来说,我们可以选择集群的方式保证高可用。
网友评论