知识卡片

用消息总线代替共享内存连接多个处理器,避免共享资源本身变成单点故障

专业/工作

内容

多处理器系统的常规做法是让CPU之间共享内存(紧耦合),但Tandem的Guardian系统意识到:一旦内存被共享,这块内存本身就成了新的单点故障——双重化内存虽然理论上可行,却代价高昂还带来严重的同步问题。于是Guardian反过来选择了松耦合:CPU之间完全不共享内存,只通过一对高速并行总线传输消息,整台机器与其说是”一台有多个处理器的计算机”,不如说更像”一个运行着单一系统内核的计算机网络”。这提示一个通用的容错设计视角:判断一个组件是否该被复制冗余之前,先问一句”我打算用来连接这些冗余组件的东西,本身会不会成为新的单点故障”——解决旧的单点故障时,不能顺手引入一个新的。

参考来源

《架构之美》第8章《Guardian:一个容错操作系统环境》