微服务 教程
1085个小节阅读:196.2k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Curator是 Netflix公司开源的一套ZooKeeper客户端框架。和ZkClient一样,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和 NodeExistsException异常等,目前已经成为了Apache的顶级项目,是全世界范围内使用最广泛的ZooKeeper客户端之一。
xxxxxxxxxx
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
xxxxxxxxxx
String connStr = "192.168.18.128:2181";
CuratorFramework cur= CuratorFrameworkFactory.builder()
.connectString(connStr)
.connectionTimeoutMs(5000)
.retryPolicy(new ExponentialBackoffRetry(1000,3))
.build();
cur.start();//连接
xxxxxxxxxx
cur.create().withMode(CreateMode.PERSISTENT)
.forPath("/root", "baizhan".getBytes());
xxxxxxxxxx
cur.delete().forPath("/root");
注意:
此方法只能删除叶子节点,否则会抛出异常。
删除一个节点,并且递归删除其所有的子节点
xxxxxxxxxx
cur.delete().deletingChildrenIfNeeded().forPath("/root");
删除一个节点,强制指定版本进行删除
xxxxxxxxxx
cur.delete().withVersion(10086).forPath("path");
删除一个节点,强制保证删除
xxxxxxxxxx
cur.delete().guaranteed().forPath("path");
注意:
guaranteed()接口是一个保障措施,只要客户端会话有效,那么Curator会在后台持续进行删除操作,直到删除节点成功。
注意:上面的多个流式接口是可以自由组合的,例如:
xxxxxxxxxx
cur.delete().guaranteed().deletingChildrenIfNeeded().withVersion(10086).forPath("/root");
读取一个节点的数据内容
xxxxxxxxxx
cur.getData().forPath("/root");
注意:
此方法返的返回值是byte[ ];
读取一个节点的数据内容,同时获取到该节点的stat
xxxxxxxxxx
Stat stat = new Stat();
client.getData().storingStatIn(stat).forPath("path");
更新一个节点的数据内容
xxxxxxxxxx
client.setData().forPath("path","data".getBytes());
注意:
该接口会返回一个Stat实例;
更新一个节点的数据内容,强制指定版本进行更新
xxxxxxxxxx
client.setData().withVersion(10086).forPath("path","data".getBytes());
xxxxxxxxxx
client.checkExists().forPath("path");
注意:
该方法返回一个Stat实例,用于检查ZNode是否存在的操作. 可以调用额外的方法(监控或者后台处理)并在最后调用
forPath()
指定要操作的ZNode
xxxxxxxxxx
client.getChildren().forPath("path");