使用 ZooKeeper Watch 有哪些容易踩的坑?
查看完整题解
参考回答
直接回答
回调应短,收到事件后重读当前值。普通 Watch 触发后要重新注册,断线期间收不到事件,哪怕用了持久 Watch 也要做状态校准。
讲清原理
同一会话下,监听和回调有顺序约束,但相邻变更可能只靠当前读取观察到最后一份状态。断线就暂停依赖实时状态的动作,重连后拉全量或核对版本。会话过期后重新登记 Watch 和临时节点。
例子与易错点
锁持有者失联时先停止写关键资源,重连后确认会话和所有权,外部资源再用围栏挡住过期持有者。
延伸阅读 ZooKeeper 的 Watcher 怎样工作? · 一次 ZooKeeper 监听从注册到回调经历什么? · ZooKeeper 的 Watch 一直有效吗? · ZooKeeper 临时节点什么时候删除?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。