知识卡片
故障与失效的区分决定容错设计的目标
内容
“故障(fault)”和”失效(failure)”不是同义词,混用会导致容错设计目标模糊。故障指 系统某一部分的状态偏离了正常标准(比如一块磁盘损坏、一个进程崩溃),是局部的、 可能随时发生的事件;失效则是系统作为一个整体停止向用户提供服务,是全局性的后果。 故障的概率不可能降到零——任何硬件、软件、人都会出错——所以容错设计真正能做、也 应该做的目标不是消灭故障,而是设计出”故障发生也不至于升级为失效”的机制,用不可靠的 部件构建可靠的整体系统。”容错(fault-tolerant)”这个词本身也容易误导:它听起来像是 能容忍所有可能的错误,但实际上只有针对特定类型的错误谈容错才有意义(例如容忍单块 磁盘故障,而不是容忍地球被黑洞吞噬),任何容错设计都必须先明确”我们准备应对的是 哪一类故障”,而不是笼统地追求”绝对可靠”。
参考来源
- 位置:《数据密集型应用系统设计》第一章《可靠性、可伸缩性、可维护性》"可靠性"
(源文件:_epub-src/ch1_split_002.html)
- 结论依据:原文明确区分"故障通常定义为系统的一部分状态偏离其标准,而失效则是系统
作为一个整体停止向用户提供服务",并指出故障概率不可能降到零、容错只对特定类型
错误有意义,直接支撑本卡片关于两者区分及其对容错设计目标的影响。
- 原始内容:故障(fault)不同于失效(failure)。故障通常定义为系统的一部分状态偏离
其标准,而失效则是系统作为一个整体停止向用户提供服务。故障的概率不可能降到零,
因此最好设计容错机制以防因故障而导致失效。