Zookeeper客户端api有三种方式:
1、原生api
2、客户端client
3、第三方curator
原生api使用起来麻烦点,首先事件注册在事件触发后就失效,又必须重新注册,汽车删除节点没有原生迭代删除api。
这里用原生api写的增删该查的简单例子。
package enjoy.zook;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
public class TestZook01 implements Watcher {
//使用逗号,不适用分号,分号直接报错了
public static String CONNECTION_URL = "192.168.249.138:2181,192.168.249.139:2181,192.168.249.140:2181";
public static int SESSION_TIME_OUT = 5000;
private CountDownLatch connectedSemaphore = new CountDownLatch(1);
public ZooKeeper zooKeeper = null;
public static void main(String[] args) throws InterruptedException {
TestZook01 zook = new TestZook01();
String root = "/root";
String path ="/root/water";
zook.createConnection();
if(zook.exsits(root,true) == null){
zook.createPersistNode(root,"节点初始化");//创建持久节点
}
if(zook.exsits(path,true) == null){
zook.createEphemeralNode(path,"节点初始化");//创建临时节点
}else{
zook.deleteNode(path);//删除节点
}
//修改数据
if(zook.exsits(path,true) != null){
zook.writeData(path,"hello World".getBytes());
}
//获取数据
zook.readData(path);
//删除节点
if(zook.exsits(path,true) != null){
zook.deleteNode(path);//删除节点
}
//删除节点
if(zook.exsits(root,true) != null){
zoo