Watch机制的通知状态和事件类型
同一个事件类型在不同的连接状态中代表的含义有所不同,下表列举了常见的连接状态和事件类型,如表1所示。
表1 Zookeeper连接状态和事件类型
连接状态 | 状态含义 | 事件类型 | 事件含义 |
---|---|---|---|
Disconnected | 连接失败 | NodeCreated | 节点被创建 |
SyncConnected | 连接成功 | NodeDataChanged | 节点数据变更 |
AuthFailed | 认证失败 | NodeChildrentChanged | 子节点数据变更 |
Expired | 会话过期 | NodeDeleted | 节点被删除 |
从表1可知,Zookeeper常见的连接状态和事件类型分别有4种,具体含义如下。
当客户端断开连接,这时客户端和服务器的连接就是Disconnected状态,说明连接失败;当客户端和服务器的某一个节点建立连接,并完成一次version、zxid的同步,这时客户端和服务器的连接状态就是SyncConnected,说明连接成功;当Zookeeper客户端连接认证失败,这时客户端和服务器的连接状态就是AuthFailed,说明认证失败;当客户端发送Request请求,通知服务器其上一个发送心跳的时间,服务器收到这个请求后,通知客户端下一个发送心跳的时间是哪个时间点。当客户端时间戳达到最后一个发送心跳的时间,而没有收到服务器发来的新发送心跳的时间,即认为自己下线,这时客户端和服务器的连接状态就是Expired状态,说明会话过期。
当节点被创建时,NodeCreated事件被触发;当节点的数据发生变更时,NodeDataChanged事件被触发;当节点的直接子节点被创建、被删除、子节点数据发生变更时,NodeChildrentChanged事件被触发;当节点被删除时,NodeDeleted事件被触发。