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

使用 ZooKeeper Watch 有哪些容易踩的坑?

查看完整题解

参考回答

直接回答

回调应短,收到事件后重读当前值。普通 Watch 触发后要重新注册,断线期间收不到事件,哪怕用了持久 Watch 也要做状态校准。

讲清原理

同一会话下,监听和回调有顺序约束,但相邻变更可能只靠当前读取观察到最后一份状态。断线就暂停依赖实时状态的动作,重连后拉全量或核对版本。会话过期后重新登记 Watch 和临时节点。

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

例子与易错点

锁持有者失联时先停止写关键资源,重连后确认会话和所有权,外部资源再用围栏挡住过期持有者。

延伸阅读 ZooKeeper 的 Watcher 怎样工作? · 一次 ZooKeeper 监听从注册到回调经历什么? · ZooKeeper 的 Watch 一直有效吗? · ZooKeeper 临时节点什么时候删除?

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

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