当前位置:   article > 正文

zookeeper事件监听机制_zk监听机制是回调吗

zk监听机制是回调吗
  1. watcher的概念
    zookeeper提供了数据的发布订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容发生变化,节点下的子节点列表发生变化)会实时,主动通知订阅者;
    zookeeper采用watcher机制实现了发布/订阅功能.该机制在被订阅者对象发生变化的时候会异步的通知客户端,因此客户端不必在watcher注册后轮询阻塞,从而减轻客户端的压力.

  2. watcher的架构
    watcher实现由三部分组成
    zookeeper服务端
    zookeeper客户端
    客户端的ZKWatchManager对象
    客户端首先将Watcher注册到服务器上,同时将Watcher对象保存在客户端的Watch管理器中,当Zookeeper服务端监听的数据状态发生变化时,服务端会首先主动通知客户端,接着客户端的Watch管理器会触发相关Watcher来回调相应的处理逻辑,从而完成整体的数据发布/订阅流程

  3. watcher特性

    特性说明
    一次性watcher是一次性的,一旦触发就会移除,再次使用就需要重新注册
    户端顺序执行watcher回调时顺序串行化执行的,只有回调后客户端才能看到最新的数据状态
    量级watchEvent是最小的通信单元,结构上只包含通知状态,事件类型和节点路径,并不会告诉数据节点变化前后的具体内容
    时效性watcher只有在当前session彻底失效时才会生效,若在session有效期内快速重连成功,则watcher依然存在,仍可以接收到通知
  4. watcher通知状态
    KeepState时客户端与服务器端连接状态发生变化时对应的通知类型.

    举属性说明
    SyncConnected客户端与服务器正常连接时
    Disconnected客户端与服务器断开连接时
    Expired会话session失效时
    AuthFailed身份认证失败时
  5. Watcher的事件类型
    EventType是数据节点(znode)发生变化时对应的通知类型,EventType变化时KeeperState永远处于SyncConnected通知状态下,当KeeperState发生变化时,EventType永远为None

    枚举类型说明
    None
    NodeCreatedWatcher监听的数据节点被创建时
    NodeDeletedWatcher监听的数据节点被删除时
    NodeDataChangedWatcher监听的数据节点内容发生变更时
    NodeChildrenChangedWatcher监听的数据节点的子节点发生变化时
  6. 捕获相应的事件

    注册方式CreatedChildrenChangedChangedDeleted
    zk.exists("/node",watcher)可监控可监控可监控
    zk.getData("/node",watcher)可监控可监控
    zk.getChildren("/node",watcher)可监控可监控
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/974920
推荐阅读
相关标签
  

闽ICP备14008679号