Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

别的客户端写入后,我能立刻读到最新值吗?

查看完整题解

参考回答

直接回答

不保证。另一个会话可能连在还没追上最新事务的服务器上,普通读取直接从这台的本地状态回答。

讲清原理

在多数实际场景,先对节点做 sync,等回调完成,再在同一会话读取,能让服务器先尝试追上 Leader 已知的进度。sync 本身无需法定人数确认,因此后面的读仍可能读到旧值。

ZAB 从提案、法定票数到按序应用
ZAB 从提案、法定票数到按序应用

例子与易错点

A 把 /flags/pay 改为 on 后告诉 B 去读,B 可能暂时读到 off。如果 B 要做依赖该值的条件写,可用节点版本和原子的检查与更新来保护操作。

延伸阅读 ZooKeeper 的连接和会话有什么区别? · ZooKeeper 保证的读写一致性分别是什么? · 从 CAP 角度看,ZooKeeper 如何处理网络分区?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。