知识卡片
Attiya-Welch定理:线性一致性的延迟代价
内容
线性一致性代价高不只是工程上的经验之谈,而是有严格数学证明的:Attiya-Welch定理证明,线性一致的读写操作,其响应时间必然正比于网络延迟的不确定性——网络延迟波动越大,要维持线性一致性所付出的等待代价就越高,这是任何实现方式都无法绕开的下限,而不是某个具体算法设计得不够好。这解释了为什么在跨数据中心、网络延迟高度可变的环境下,线性一致性的代价会格外明显;多数系统因此选择在这种环境里放弃线性一致性以换取更低延迟。一个反直觉的佐证是:即便是同一台机器内的现代多核CPU,其内存访问模型也不是线性一致的(体现为CPU缓存、写缓冲区、内存屏障等机制),这不是因为容错,而纯粹是为了性能——如果连物理距离几乎为零的核间内存都不愿为线性一致性买单,跨网络的分布式系统就更难承受这个代价。发散:这个定理提醒我们,追求”更强一致性模型”本身没有免费午餐,代价的量级取决于网络环境的不确定性,而非仅仅取决于算法优劣。
参考来源
- 位置:《数据密集型应用系统设计》第九章《一致性与共识》"线性一致性与网络延迟"(源文件:_epub-src/ch9_split_000.html)
- 结论依据:原文引用Attiya-Welch定理说明线性一致读写的响应时间正比于网络延迟的不确定性,并以现代多核CPU内存本身也不是线性一致的(出于性能考虑而非容错)作为佐证,直接支撑本卡片结论。
- 原始内容:Attiya和Welch证明,如果你想要线性一致性,读和写请求的响应时间,至少要与网络延迟的不确定性成正比……即使是多核CPU上的内存也不是线性一致的。