知识卡片
宁可让可疑的组件立即停止工作,也不要让它带着问题继续运行
内容
Guardian的容错哲学被设计得”多疑”:只要一个组件表现出任何可疑迹象(磁盘控制器返回无效状态、CPU没有按时发出心跳),系统的默认反应不是想办法容忍它继续运行,而是立刻让它下线、由另一个组件接管——哪怕这个故障其实很轻微,本可以不影响结果。这背后的权衡很清楚:一个组件”完全停止”是容易被发现、容易被处理的状态,而”带着未知程度的错误继续运行”却可能在无人察觉的情况下悄悄污染数据,后者的破坏范围往往比前者大得多、也更难追溯。这提示一个通用的可靠性设计取舍:当无法确定一个异常状态的严重程度时,把处理策略设计成”立即隔离”而非”尝试优雅降级”,代价是可能误伤一些其实无害的情况,但换来的是可预测、可追溯的失败模式。
参考来源
《架构之美》第8章《Guardian:一个容错操作系统环境》