1.Zookeeper Watcher简介
1.1)提供了分布式数据发布、订阅功能。
1.2)引入了watcher机制来实现这种分布式的通知功能(主要触发事件:节点创建、节点删除、节点改变等)。
1.3)watcher包括以下三个过程:客户端向服务端注册watcher、服务端事件发生触发watcher、客户端回调watcher得到触发事件情况。
2.watcher机制特点
2.1)一次性触发:事件发生触发监听,一个watcher event就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发。
2.2)事件封装:
2.2.1)zookeeper使用watchedEvent对象来封装服务端事件并传递。
2.2.2)三个基本属性:通知状态(keeperState)、事件类型(EventType)、节点路径(path)
2.3)event异步发送:watcher的通知事件从服务端发送到客户端是异步的。
2.4)先注册再触发:zookeeper中的watch机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,通知给客户端。
3.通知状态和事件类型
3.1)同一事件类型在不同的通知状态中代表的含义有所不同,下表列举了常见的通知状态和事件类型。
3.1.1)SyncConnected(0)
3.1.1.1)None(-1):客户端于服务端成功建立连接
3.1.1.2)NodeCreated(1):Watcher监听的对应数据节点被创建
3.1.1.3)NodeDeleted(2):Watcher监听的对应数据节点被删除,此时客户端与服务器处于连接状态
3.1.1.4)NodeDataChanged(3):Watcher监听的对应数据节点的数据内容改变
3.1.1.5) NodeChildChanged(4):Watcher监听的对应数据节点的子节点列表发生改变
3.1.2)Disconnected(0)
3.1.2.1)None(-1):客户端与Zookeeper服务断开连接,此时客户端与服务器处于断开连接状态
3.1.3)Expired(-112)
3.1.3.1)Node(-1):会话超时,此时客户端会失效,同时也会收到SessionExpiredException异常
3.1.4)AuthFailed
3.1.4.1)Node(-1):通常有两种情况:
3.1.4.1.1)使用错误的schema进行权限检查;
3.1.1.1.2)SASL权限检查失败
注意:通常也会收到AuthFailedException异常
注意:只有设置好监听,才能触发监听
4.shell客户端设置watcher