4.1 重要理论
4.1.1 数据模型 znode
zk数据存储结构是一个树形结构,根节点下挂载子节点,每个节点都是一个znode,是zk中数据的最小单元,每个znode都可以保存数据
1. 节点类型
持久节点:节点被创建后一直保存,直到删除
持久顺序节点:父节点为儿子节点记录创建的顺序,即创建时在节点名字后添加数字,一共10位10进制数,从0开始计数
临时节点:临时节点的生命周期和客户端的会话绑定在一起,会话消失则被清理。临时节点只能做叶子节点
临时顺序节点:顺序含义同持久顺序节点
4.1.4 Watcher机制
zk通过Watcher机制实现发布/订阅模式
1. 原理
2. watcher事件
比较重要的两个事件:
NodeDataChanged,watcher监听对应数据节点的数据内容发生变化
NodeChildrenChanged,watcher监听的节点的子节点列表发生变化
3. watcher特性
一次性:watcher触发后,zk将其从客户端的watcherManager中删除,服务器端也会删除该watcher。所以watcher机制不适合监听经常变化的场景。譬如Kafka将offset的管理放到了自身
串行:一个watcher事件完全处理完(回调并删除),才能开始注册新的watcher
轻量级:传递给服务端的是简易版watcher,回调逻辑放在客户端,不在服务器
4.2 客户端
1. ZKClient
2. Curator