1 . Java API 操作Zookeeper
1. 引入依赖
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
在 Idea 里 如果报错 手动点击一下 Maven 的下载刷新
2 .ZK 增删改查
import org.apache.zookeeper.*;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.data.Stat;
import java.io.IOException;
public class CreatePath {
public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
//参数1:Zookeeper连接字符串 ip地址:端口,有多个的话需要全部写上,用逗号隔开
//参数2:连接超时实间
//参数3:观察者对象(回调方法)
ZooKeeper zk = new ZooKeeper("192.168.1.6:2181", 30000, new Watcher() {
public void process(WatchedEvent event) {
System.out.println(event.getState());
System.out.println(event.getType());
System.out.println(event.getPath());
}
});
//CreateMode.PERSISTENT:持久化
//创建节点,并复制
String path = zk.create("/node2","hello zookeeper".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("path"+path);
//创建子节点,并复制
zk.create("/node2/node1Child1", "this is node1 son".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/node2/node1Child2", "this is node1 son".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//获取节点对应的数据
System.out.println("data of node2"+new String(zk.getData("/node2",false,null)));
// 获取子节点
System.out.println(zk.getChildren("/node2",true));
//修改节点对应的数据
zk.setData("/node2/node1Child1","hello zk".getBytes(),-1);
//删除节点
zk.delete("/node2/node1Child2",-1);
}
}