故障终究会发生

作者:迈克尔·尼加德(MichaelNygard)

硬件会出错,于是我们增加冗余资源来增加系统的可靠性。这样做虽然可以避免由于单点故障引起的系统错误,但同时也增加了至少一台设备出错的概率。

软件会出错,由软件构成的应用程序自然也会出错,于是我们增加额外的监控程序,好在应用失效时报警,但是监控程序也是软件,一样会出错。

人无完人,我们也会犯错,所以我们把操作、诊断和处理都变成自动化。可是自动化虽然降低了主动犯错的概率,却增加了系统被忽略的概率。何况任何自动化系统应付环境变化的能力都比不上人类。

于是我们又为自动化增加监控,结果是更多的软件,导致更高的故障率。

计算机网络由硬件、软件和长距离的线路构成,当然也会出错。实际上,即便网络工作正常,由于状态空间的无限性,网络的行为也是不可预测的。独立部件的行为可以确定,但是所有部件组合起来,就会无法避免地出现混沌现象。

所以用来避免故障的安全机制都会带来新形式的故障。集群软件可以把应用程序从故障服务器转移到正常的服务器,但如果集群网络功能失常,又会出现“网络分区综合症(split-brain-syndrome)”(译注1)。

别忘了三哩岛核电站泄漏事故(Three Mile Island accident)(译注2)是由于减圧阀引起的,而减压阀本身是用来避免过压故障的安全机制。

既然系统必然会出错,我们该怎么办呢?

应当承认系统中必然存存在着不同形式的故障陷患,无论如何无法彻底消灭。如果你不否认这个事实,管理故障和限制故障就无从谈想。只有承认这一点,才能针对特定的故障设计决策,正如汽车工程师知道交通事故无法避免,所以设计缓冲区(crumple zones)来保护乘客一样,你也可以设计预护措施来限制故障,保护系统其余部分。

如果不事先设计好防范故障的模型,就无法应对威胁系统安全的意外情况。

译注1:split-brain-syndrome愿意是裂脑综合症,指两个脑半球的感觉及运动功能的连接被切断,以致患者丧失日常生活自理能力的病症。这里用来比喻网络分区之间正常通信失效的情况。

译注2:Three Mile Island accident指1979年发生在美国宾夕法尼亚州三哩岛的核电站泄漏事故。事故最初由二号反应堆的辅助回路泠凝水泵故障引起,导致二号反应堆内温度和压上升,触发堆内的减压阀开启。卸压后,由于减压阀故障,阀门未能按预期自动关闭,进一步导致冷却水大量溢出,堆心温度上升。待工作人员发现问题所在的时候,47%的堆心燃料己经融毁并发生泄漏,幸好有防护外壳阻挡,未造成人员死亡,但经济损失超过10亿美元。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值