【吊打面试官系列-ZooKeeper面试题】说说服务端处理 Watcher 实现 ?

大家好,我是锋哥。今天分享关于 【说说服务端处理 Watcher 实现 ? 】面试题,希望对大家有帮助;

说说服务端处理 Watcher 实现 ?

1、 服务端接收 Watcher 并存储
接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在 WatcherManager 的 WatchTable 和 watch2Paths 中去。

 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

2、 Watcher 触发
以服务端接收到 setData() 事务请求触发 NodeDataChanged 事件为例:

 

2.1 封装 WatchedEvent
将通知状态(SyncConnected)、事件类型(NodeDataChanged)以及节点路径封装成一个 WatchedEvent 对象

 

2.2 查询 Watcher  
从 WatchTable 中根据节点路径查找 Watcher

  

2.3 没找到;说明没有客户端在该数据节点上注册过 Watcher

 

2.4 找到;提取并从 WatchTable 和 Watch2Paths 中删除对应 Watcher( 从这里 可以看出 Watcher 在服务端是一次性的,触发一次就失效了

 

3、 调用 process 方法来触发 Watcher  
这里 process 主要就是通过 ServerCnxn 对应的 TCP 连接发送 Watcher 事件通知。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值