首页/开发/系统分析与架构设计速查/线性一致性(Linearizability)

线性一致性(Linearizability)

比顺序一致性更强的单对象保证:每个操作看起来在调用与返回之间的某一时刻原子生效,且所有客户端观察到同一顺序;组合多个线性一致对象仍是线性一致。

别名原子一致性、可线性化
判定要点操作生效点落在调用区间内,且与实时顺序一致
实现代价通常需要共识协议或多副本同步写

判定方法:把并发执行的操作按调用与返回区间整理,尝试构造一个串行顺序,使每个读都返回最近一次写的结果;找不到这样的顺序即违反线性一致。历史检查工具(如 Jepsen)即按此思路自动判定。

线性一致 ≠ 可串行化:前者关注单对象实时顺序,后者关注多对象事务的等价串行执行。

易错点

  • 把线性一致等同于可串行化,隔离级别选错
  • 仅在单对象上满足线性一致,就宣称整个事务满足

数据来源与参考

  • Maurice Herlihy & Jeannette Wing《Linearizability: A Correctness Condition for Concurrent Objects》(1990)
  • Jepsen 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌