Memo/zookeeper-linearizable-reads

1 分钟阅读

ZooKeeper 的 sync + read 不保证严格线性一致读

实现未将 sync 作为空写复制,网络分区边界下可能返回旧数据。

理论上可通过 sync + read 获得线性一致读,但 ZooKeeper 的 sync 实现并未将其作为空写日志复制。leader 直接向 follower 返回 zxid,未像 Raft 的 ReadIndex 或 lease read 一样确认自己仍是 leader。

网络分区或脑裂的边界条件下,这可能返回旧数据。因此它不满足严格的线性一致读语义,尽管该场景罕见且实现上可以修复。

参考:ZooKeeper 论文阅读

相关阅读

文章阿里盘古性能导向的演进文章PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database文章TLA+ 学习笔记

讨论

邮箱用于身份识别和回复通知,并由 Waline 存储。