zookeeper理论
会话机制
- 一个客户端连接一个会话,由zookeeper分配唯一会话id
- 客户端以特定的时间间隔发送心跳以保持会话有效,超过会话超时时间未收到客户端的心跳,则判断客户端无效(默认2倍tickTime)
- 会话中请求是FIFO(先进先出原则)的顺序执行
znode的数据构成
- 节点数据:存储的基本信息(状态,配置,位置等)
- 节点元数据:stat命令下的数据
- 数据大小:限制1M
znode节点类型
- 持久节点: 直接通过create path value创建
- 临时节点:create -e path value
- 持久顺序节点:create -s path value
- 临时顺序节点:create -es path value
注:
- session会话失效时,临时节点就会被删除
- 顺序节点的创建,每个父节点拥有一个计数器,这个计数器是有限制的,2147483647之后将溢出
- 顺序节点在会话结束后仍存在
Watch监听机制
客户端能在znodes上设置watch,监听znode的变化,包括增删改查,通过stat path,ls path, get path皆可查看
触发watch事件的条件有4种,create,delete,change,child(子节点事件)
监听步骤
任何session(s1、s2)都可以对自己感兴趣的znode监听
当znode通过s1对节点进行了修改
s1、s2都会收到znode的变更事件通知
注意:
仅一次性:watch触发后删除,要持续监听的话需要持续提供设置watch
有序性:客户端先得到watch通知才可以查看变化结果
一个watch对象只会被通知一次,如果一个watch同时注册了多个接口,如果此时删除节点,这个事件对多个接口都有效,但是watch只会被调用一次