别的客户端写入后,我能立刻读到最新值吗?
查看完整题解
参考回答
直接回答
不保证。另一个会话可能连在还没追上最新事务的服务器上,普通读取直接从这台的本地状态回答。
讲清原理
在多数实际场景,先对节点做 sync,等回调完成,再在同一会话读取,能让服务器先尝试追上 Leader 已知的进度。sync 本身无需法定人数确认,因此后面的读仍可能读到旧值。
例子与易错点
A 把 /flags/pay 改为 on 后告诉 B 去读,B 可能暂时读到 off。如果 B 要做依赖该值的条件写,可用节点版本和原子的检查与更新来保护操作。
延伸阅读 ZooKeeper 的连接和会话有什么区别? · ZooKeeper 保证的读写一致性分别是什么? · 从 CAP 角度看,ZooKeeper 如何处理网络分区?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。