高可用是一个能算出来的数:可用度 = MTBF ÷(MTBF + MTTR)。 四个九是每年 52.6 分钟,五个九是 5.3 分钟;看着只差一个九,工作量差一个数量级。
07.06 讲「设备能不能一起工作」,这一节讲「它们能不能一直工作」。 而「一直」这个词要量化:量化之后就发现,多一个九的钱是翻倍的。
一、几个九分别是多少停机
可用度 每年停机 每月停机
99% 5256 分钟 438 分钟 99.9% 525.6 分钟 43.8 分钟 99.99% 52.6 分钟 4.4 分钟 99.999% 5.3 分钟 26 秒 99.9999% 32 秒 2.6 秒
这张表最有用的是「每月停机」那一列:因为大多数业务是「按次」感受停机的,不是「按年」。 四个九意味着每月还能停四分半,五个九意味着每月只停 26 秒。
所以「我们要五个九」这句话,先要问「每月停 26 秒,业务能不能感知到」。 如果不能,那就还没到需要五个九的地步。
二、两个变量:MTBF 与 MTTR
可用度 = MTBF ÷(MTBF + MTTR),两个变量分别对应两件事:
变量 含义 能不能改
MTBF 多久坏一次 靠器件质量,改不了 MTTR 坏了多久修好 靠备件与流程,能改
所以「提高可用性」的工程手段,八成是「缩短修复时间」: MTBF 十年、MTTR 4 小时,可用度 99.9954%;同样 MTBF,MTTR 压到 1 小时,可用度升到 99.9989%。
而 MTTR 由三件事决定:发现得多快(监控)、备件在哪里(库存)、谁来修(支持合同)。 这三件事都能用钱买,而 MTBF 不能。
三、并联的数字好看得不像真的
两台并联(冗余)的可用度是 1 −(1 − A)的平方。 单台 99.99543%,两台并联是 99.9999998%——年停机从 24 分钟降到 0.07 秒。
这个数字好看得不像真的,因为它确实不是真的: 它假设两台完全独立,而真实的冗余系统有三处共用:
一、共用电源:一路市电跳了,两台一起停。二、共用上行:一台核心挂了切过去,上行还是那一条。 三、共用切换机制:切换本身可能失败,而没演练过的双机不一定切得过去。
所以真实可用性往往远低于计算值,而「找出那几处共用」比「算并联公式」更有价值。
四、动手 Demo:高可用性,九九后面有几个九
这段把几个九换算成每年与每月的停机时间,再算两台并联的可用度,并指出并联公式的三个前提。
av = 1 - 10 ** (-nines)
down_year = (1 - av) * 365 * 24 * 60 * 60
label = u"99." + u"9" * (nines - 2) + u"%"
single = 87600 / (87600.0 + 4)
pair = 1 - (1 - single) ** 2
实跑输出:
--------------------------------------------------------------------
高可用性,九九后面有几个九
--------------------------------------------------------------------
**「高可用」不是形容词,是一个能算出来的数。**
**它等于「不出故障的时间 ÷ 总时间」,写成百分比就是一串九。**
可用度 = MTBF ÷(MTBF + MTTR)。**两个变量:多久坏一次,坏了多久修好。**
可用度 每年停机 每月停机 通俗说法
--------------------------------------------------------
99% 5256.0 分钟 438.0 分钟 2 个九
99.9% 525.6 分钟 43.8 分钟 3 个九
99.99% 52.6 分钟 4.4 分钟 4 个九
99.999% 5.3 分钟 0.4 分钟 5 个九
99.9999% 32 秒 2.6 秒 6 个九
**四个九是每年 52.6 分钟,五个九是 5.3 分钟。**
**看着只差一个九,工作量差一个数量级。**
**单台设备的可用度由 MTBF 和 MTTR 决定**:
MTBF 87600 小时(十年)、MTTR 4 小时 → 可用度 99.99543%,年停机 24 分钟。
MTBF 87600 小时(十年)、MTTR 1 小时 → 可用度 99.99886%,年停机 6 分钟。
MTBF 262800 小时(三十年)、MTTR 4 小时 → 可用度 99.99848%,年停机 8 分钟。
**关键在 MTTR**:MTBF 靠器件质量,改不了;MTTR 靠备件和流程,能改。
所以「提高可用性」的工程手段,八成是「缩短修复时间」,不是「买更贵的设备」。
**两台并联(冗余)就不一样了**:
单台 99.99543%,年停机 24 分钟。
两台并联 99.9999998%,年停机 0.0657 秒。
**数字好看得不像真的——因为它确实不是真的。**
这是「两台都坏了才停」的理想模型,前提是两台完全独立。
真实系统里「切换失败」「共用电源」「共用上行」这些单点不并联,**它们照样能把两个九吃掉。**
**所以看高可用方案,先问三件事**:
切换时间多长?业务能不能忍这几秒?
有没有共用部件?电源、上行、机柜,任何一处共用都是单点。
切换演练过没有?没练过的双机,真出事时不一定切得过去。
代码里那一行「1 减 10 的负 n 次方」就是「几个九」的数学定义: n 个九就是「不可用比例等于 10 的负 n 次方」。 记住这个定义,就能自己算任意档位。
并联公式是「1 减去「1 减 A」的平方」,值得多看一眼: 它把「两台都坏」的概率当成「两次独立事件相乘」。 所以只要有一处共用,「独立」就不成立,公式立刻失效。
这也是「双机热备」这一类方案的软肋: 它把设备做到了冗余,但电力、上行、运维流程往往还是单点。 而可用性是由「最差的那个单点」决定的。
30 秒实验
- 问一下你单位的核心设备有没有双机。
- 查一下两台设备是不是接在同一台 UPS 上。
- 算一下你们承诺的可用性是几个九,对应每月多少停机。
常见误区
- 把可用度当成形容词。它是能算的数:MTBF ÷(MTBF + MTTR)。
- 以为双机就等于五个九。电源、上行、切换机制任何一处共用都会打破假设。
- 只想着提高 MTBF。它靠器件质量改不了,能改的是 MTTR。
自测三问(点开对答案)
1. 可用度怎么算?两个变量各是什么? —— MTBF ÷(MTBF + MTTR);MTBF 是多久坏一次,MTTR 是坏了多久修好。 2. 四个九与五个九的每月停机分别是多少? —— 四个九约 4.4 分钟,五个九约 26 秒。 3. 为什么双机并联算出来的可用度往往达不到? —— 因为有共用电源、共用上行、切换失败这些不并联的单点。下一节:从技术回到钱——端口单价怎么算。
- ☐ (本节完,下一节 07.08.01 端口单价)