Zookeeper源代码阅读分析之watcher机制

本文详述了Zookeeper的Watcher机制,包括客户端的ClientWatchManager如何管理和响应事件,以及服务端如何注册和触发watcher。在Zookeeper的操作如exists、getChildren等中设置watcher,而在create、setData等改变节点行为时触发。服务端通过FinalRequestProcessor处理请求,当数据变更时,会通过ServerCnxn向客户端发送通知,客户端的EventThread线程执行watcher的process逻辑。
摘要由CSDN通过智能技术生成


    客户端ClientWatchManager,管理由ClientXncn产生的watchers和handle events
在zookeeper的exists、getChildren、getData等这些API中可以注册watcher对象到ClientWatchManager中,
create、setData、delete等这些引起zookeeper节点变化的API会触发watcher process的执行。

    服务端WatchManager,服务端的watcher对象管理器;
    注册watcher时候,会在服务端调用FinalRequestProcessor.processRequest,注册client对应的服务端连接对象ServerCnxn(实现了watcher接口)到DataTree中
这样在触发server端的watcher时,其实就是触发ServerCnxn的process方法,在ServerCnxn的process这个实现里会向对应的注册watcher对象的client发送notify消息,
而客户端会调用对应path注册的watcher对象的process方法
服务端注册watcher对象
FinalRequestProcessor.processRequest
             case OpCode.getData: {
        ...............................
                Stat stat = new Stat();
                byte b[] = zks.getZKDatabase().getData(getDataRequest.getPath(), stat,
                        getDataRequest.getWatch() ? cnxn : null);//cnxn为Serve

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值