02_服务端处理Watcher流程
2021-04-13 23:00:03 0 举报
服务端处理Watcher流程
作者其他创作
大纲/内容
客户端接收到WatcherEvent
通过SendThread的readResponse()方法同一处理
是
获取
WatcherManager:服务端的Watcher管理者,还负责Watcher事件的触发和移除已经触发的Watcher
调用remove方法删除Watcher
waitingEvents队列
3、
2、存入
删除
可看出Watcher在服务端是一次性的
将ServerCnxn对象和数据节点路径传入getData方法中去
将WatchedEvent交给EventThread线程处理
调用process()方法触发Wather
客户端回调Watcher流程
run()方法处理
将通知状态、事件类型、节点路径封装成WatchedEvent
服务端触发Watcher流程
process()方法中只是将WatchedEvent包装成WatercherEvent,然后发送给客户端,并不会真正处理Watcher
放入队列中等待处理
Watcher机制是一次性的
服务端处理Watcher流程
退出
客户端request请求
从ZKWatchManager中取出所有相关的Watcher
3、触发
2、查询
调用run()
根据节点路径从watcherTable中取出对应Watcher
拿出来并从watcherTable和watcher2Paths中删除
问:为什么要传入ServerCnxn?答:此接口默认实现NIOServerCnxn,代表客户端和服务端的一个连接,实现了Watcher的回调函数process接口
调用queueEvent方法
调用WatcherManager的triggerWatch()方法触发Watcher事件
将ServerCnxn对象和数据节点路径存入WatcherManager的WatcherTable和Watcher2Paths中
处理
1、封装
查询Watcher
找到了
先将字节流转换成WatcherEvent对象
1、
2、
转换成WatchedEvent
通过FinalRequestProcessor.processRequest()方法判断当前请求是否需要注册Watcher
1、发送到服务端
WatchedEvent
没找到
0 条评论
下一页