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

ZooKeeper 的 Watcher 怎样工作?

查看完整题解

参考回答

直接回答

Watcher 是节点变化的回调。普通 Watch 在 exists、getData 或 getChildren 读取时一起登记,匹配变化发生后触发一次。

讲清原理

通知告诉你发生了哪类变化和相关路径。应用需要再读节点来拿当前值,也可以读数据时顺手把监听重新挂上。ZooKeeper 3.6 起还支持单独登记持久和持久递归 Watch。

一次性 Watch 触发后,读状态并重新登记
一次性 Watch 触发后,读状态并重新登记

例子与易错点

配置从 A 连续改成 B、C,应用可能直接读到 C。逐次变更都要保留时,应使用能存历史并从进度续读的日志机制。

延伸阅读 ZooKeeper 的通知机制会传送什么? · 一次 ZooKeeper 监听从注册到回调经历什么? · ZooKeeper 的 Watch 一直有效吗?

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

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