Watcher机制是ZooKeeper实现的一种事件异步反馈机制,就像现实生活中某读者订阅了某个主题,这个主题一旦有任何更新都会第一时间反馈给该读者一样。
watcher设置:ZooKeeper可以为所有的读操作设置watcher,这些读操作包括getChildren()、exists()以及getData()。其中通过getChildren()设置的watcher为子节点watcher,这类watcher关注的事件包括子节点创建、删除等。通过exists()和getData()设置的watcher为数据watcher,这类watcher关注的事件包含节点数据发生更新、子节点发生创建删除操作等。
watcher触发反馈:ZooKeeper中客户端与服务器端之间的连接是长连接。watcher事件发生之后服务器端会发送一个信息给客户端,客户端会调用预先准备的处理逻辑进行应对。
watcher特性:watcher事件是一次性的触发器,当watcher关注的对象状态发生改变时,将会触发此对象上所设置的watcher对应事件。例如:如果一个客户端通过getData("/znode1", true)操作给节点/znode1加上了一个watcher,一旦"/znode1"的数据被改变或删除,客户端就会获得一个关于"znode1"的事件。但是如果/znode1再次改变,那么将不再有watcher事件反馈给客户端,除非客户端重新设置了一个watcher。
资料来源:《HBase原理与实践》,文章链接:https://developer.aliyun.com/article/724670
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。