Zookeeper客户端提供了基本的操作,但是有许多不足之处,例如其Session超时后没有重试机制,无法级联删除,一次性的Watcher机制等,因此平时业务开发常用ZkClient[10]开源客户端。其在Zookeeper原有客户端基础上进行了封装,实现了Watcher反复注册、Session超时重连、节点级联删除等功能。
本节使用Spring Boot工程来操作Zookeeper。新建一个工程ZookeeperExample,然后进行如下操作。
(1)添加组件依赖
(2)添加Zookeeper的配置信息至yml文件
(3)Zookeeper配置注入
编写一个ZookeeperModel类,用于注入yml文件中的配置信息。
(4)添加Zookeeper基本操作
在工程内,新建ZookeeperDao接口和它的实现类,简单实现Zookeeper的增删改查操作。
上面的代码中,使用ZkClient对Zookeeper进行操作。使用createEphemeralSequential方法创建临时有序节点,使用createPersistent方法创建永久节点,方法exists判断节点是否存在,readData读取节点数据,writeData写入节点数据,deleteRecursive级联删除节点等。
(5)使用测试类进行测试
在TestZKService类中,添加如下测试代码,检验ZkClient的使用情况。
运行结果如下:
临时有序节点路径为:/ephemeralSequential-0000000084,数据为:epheSequentialDatas
临时有序节点路径为:/ephemeralSequential-0000000085,数据为:epheSequentialDatas(www.xing528.com)
节点:/persis/child01,级联创建成功
临时节点:/ephemeral,创建成功
节点/persis,是否存在:false
数据节点/persis,数据为:rootDatas
child path is child02
数据节点:/persis/child02,数据:datas of child02
child path is child01
数据节点:/persis/child01,数据:datas of child01
数据节点/persis/child01,是否存在:true
数据节点/persis/child01,数据为:datas of child01
数据节点/persis/child01,数据为:update datas
节点/persis,是否存在:false
注入ZookeeperDao类的实例,然后调用Dao中的方法,从输出可见操作Zookeeper中的数据结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。