目录概要
- 初始化连接
- 增加节点
- 查询节点
- 修改节点
- 删除节点
直接干代码,引入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();