知识卡片

把所有进程间通信都统一到同一种机制上,换来了一致性,也永久背上了它的性能代价

专业/工作

内容

Guardian的一个彻底选择是:不管是访问远程磁盘、进程间通信,还是同一个CPU内两个进程之间打招呼,全部统一走同一套底层消息系统,没有例外和快捷路径。这带来了极高的架构一致性——任何组件之间的交互方式都是可预期的、可复用的同一套原语。但这个统一也不是免费的:即使在同一个CPU内部,一条不带数据的消息也要花2毫秒传输,这在当时就已经显得偏慢,直接限制了连续磁盘读取这类高频操作的吞吐量上限。这提示一个需要提前想清楚的权衡:把某个能力做成”处处统一”能带来简洁和一致性,但这个能力最坏情况下的开销,会被最频繁调用它的那个场景放大成整个系统的性能天花板,统一性的代价要按”最热路径”而不是”平均情况”来估算。

参考来源

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