01_客户端处理Watcher流程
2021-04-13 22:59:29 0 举报
客户端处理Watcher流程
作者其他创作
大纲/内容
1、标记
4、放入队列
8、注册
WatchRegistration对象封装成Packet
7、取出
Packet:用于客户端和服务端网络传输,任何需要传输的对象都要封装成Packet
2、封装
问题:每一次调用getData方法都要注册一个Watcher,那么这些Watcher实体会随着客户端请求发送到服务端吗?
dataWatches
注释
5、发送
3、再次封装
9、最终保存
finishPacket方法从Packet中提取对应Watcher
1、如果发送到服务端,服务端会出现内存紧张或其他性能问题2、虽然WatchRegistration对象封装成了Packet,但是并没有序列化到底层字节数组中去,所以也不会进行网络传输,只是将RequestHander和request两个属性进行了序列化
6、接收
SendThread线程的readResponse方法负责接收来自服务端的响应
SendThread线程的readResponse方法
发送给服务端,并等待响应
取出的Watcher注册到ZKWatcherManager中
WatchRegistration:保存了数据节点路径和Watcher对应关系
通过getData接口注册Watcher
将Watcher注册信息封装为WatchRegistration对象
dataWatches:是一个Map<String,Set<Watcher>>类型数据结构,将数据节点路径与Watcher映射后管理起来
Packet放入outgoingQueue队列,等待客户端发送给服务端
客户端标记request为\"使用Watcher监听\"
0 条评论
下一页