ZooKeeper Watch笔记

ZooKeeper Watch笔记

ID:42625890

大小:74.81 KB

页数:9页

时间:2019-09-19

ZooKeeper Watch笔记_第1页
ZooKeeper Watch笔记_第2页
ZooKeeper Watch笔记_第3页
ZooKeeper Watch笔记_第4页
ZooKeeper Watch笔记_第5页
资源描述:

《ZooKeeper Watch笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Watcher详解、接口  在ZooKeeper中,接口类Watcher用于表示一个标注你的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEventevent)Watcher触发条件:  增、删、改(重复修改也会触发,因为他只告诉你变更了,不告诉你变更多少,需要C自己去拿)abstractpublic voidprocess(WatchedEventevent)。  process()是 Watch接口中的回调方法。当ZooKeeper向客户端发送一个W

2、atcher时间通知时,客户端就会对相应的process方法进行回调,从而实现对事件的处理。likethis:syncNodes()方法。        Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists、getdata、getchild对于节点的不同操作会收到不同的 watcher信息对父节点的变更以及子节点的变更都不会触发watcher,而对watcher本身节点以及子节点的变更会触发watcher继续。ZooKeeper使用 WatchedEvent 对象封装服务端事件并传递给Watcher,从而方便回调方法process对服务端事件进行处

3、理。WatcherEvent 实体实现了序列化接口,因此可以用于网络传输。数据结构如下。ClassWatcherEvent{ type:int state:int path:String}state=-112会话超时状态state=-113 认证失败状态state= 1连接建立中state=2(暂时不清楚如何理解这个状态,ZOO_ASSOCIATING_STATE)state=3连接已建立状态state=999无连接状态type=1创建节点事件type=2删除节点事件type=3更改节点事件type=4子节点列表变化事件type=-1会话session事件type=-2监控被移除事件Wat

4、cher发送过程。     当服务端产生 WatchedEvent 事件之后,会调用getWrapper方法将自己包装成一个可序列化的 WatcherEvent 事件,以便于通过网络传输到客户端。客户端在接收到服务端的这个事件对象后,首先会将 WatcherEvent 事件还原成一个 WatchedEvent 事件。并传递给process方法处理。回调方法根据传入参数解析完整服务端事件。Watcher发送的数据        无论是 WatcherEvent 还是 WatchedEvent,他对ZooKeeper服务端事件的封装都是极其简单的。当/Test/test1/1_1节点发生变更时

5、,服务端会发送给客户端一个“ZNode数据变更“事件,客户端也只能接收到如下信息:  KeeperState:SyncConnected  EventType:NodeDataChanged  Path:/zk-b        也就是说,客户端无法直接从该事件中获取到对应数据节点的原始数据内容,以及变更后的新数据内容。而是客户端再次主动去重新获取数据。——这个也是ZooKeeper一个非常重要的特性。Watcher工作机制服务端发送不处理逻辑、客户端发送并处理逻辑。客户端注册Watcher     创建一个 new ZooKeeper()客户端对象实例时,可以传入一个Watcher.  

6、   new ZooKeeper(String connectString,int sessionTimeout,Watcher watcher)       这个Watcher将作为整个ZooKeeper回话期间的默认Watcher,会一直被保存在客户端ZKWatchManager的defaultWatcher中。另外,ZooKeeper客户端也可以通过 getData、getChildren和exist三个接口来向ZooKeeper服务器注册Watcher。列举个getData例:         public byte[] getData(String path,boolean wa

7、tch, Stat stat)     public byte[] getData(final String path,Watcher watch, Stat stat)      第一个通过一个boolean参数来标识是否使用默认Watcher进行注册,具体注册逻辑与第二个接口一致。注册Watcher后     在getData接口注册Watcher后,客户端首先会对当前客户端请求request进行标记,将其设置为”使

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。