您的位置:首页 > 编程语言 > Java开发

初步认识zookeeper(3)--JavaAPI操作节点(增删改查)

2019-07-21 22:57 337 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/shuai8624/article/details/96770428

目录概要

  • 初始化连接
  • 增加节点
  • 查询节点
  • 修改节点
  • 删除节点

直接干代码,引入pom依赖

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>

1、初始化zookeeper连接

final CountDownLatch countDownLatch = new CountDownLatch(1);
//若是集群的话,用,号隔开如:192.168.137.128:2181,192.168.137.129:2181,192.168.137.130:2181
ZooKeeper zooKeeper = new ZooKeeper("192.168.137.128:2181"
, 4000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println("事件:"+watchedEvent.getType());
//连接成功
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
countDownLatch.countDown();
}
}
});
System.out.println("1"+zooKeeper.getState());
countDownLatch.await();
System.out.println(zooKeeper.getState());

结果如下:

2、增加节点

zooKeeper.create("/ws","gg".getBytes(),
ZooDefs.Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);//CreateMode.PERSISTENT持久化

参数说明:

参数 描述
/ws 节点路径 (当前节点不存在的话,不可以创建子节点)
“gg”.getBytes() 节点内容
ZooDefs.Ids.属性 OPEN_ACL_UNSAFE(完全开放的ACL权限,都可以操作节点)
CREATOR_ALL_ACL :(只有创建者才有ACL权限)
READ_ACL_UNSAFE:(只能读取ACL)
CreateMode.类型 PERSISTENT(持久化节点)
PERSISTENT_SEQUENTIAL(持久化有序节点)
EPHEMERAL(临时节点)
EPHEMERAL_SEQUENTIAL(临时有序节点)

3、查询节点

//查询节点
Stat stat = new Stat();
byte[] bye = zooKeeper.getData("/ws",true,stat);
System.out.println("查询出的节点内容:" +new String(bye));

注意:stat中包含节点的版本信息,修改或删除时需要版本信息

4、修改节点

//修改节点
stat = zooKeeper.setData("/ws","gg2".getBytes(), stat.getVersion());

5、删除节点

//删除节点
zooKeeper.delete("/ws",stat.getVersion());

6、最后关闭zookeeper连接

zooKeeper.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: