1、zookeeper的搭建
zk的搭建,集群,奇数台,一般最少3台。(一半以上提供服务,zk就正常),搭建步骤就不累述了。
2、基础功能
要学习zk,我们必须知道zk的核心功能,状态记录和监控。
基础功能描述:
create:在本地目录树中创建一个节点
delete:删除一个节点
exists:测试本地是否存在目标节点
get/set data: 从目标节点上读取 / 写数据
get/set ACL :获取 / 设置目标节点访问控制列表信息
get children :检索一个子节点上的列表
sync :等待要被传送的数据
3、增删改查的基础demo
import org.apache.zookeeper.*;
import java.io.IOException;
/**
* zk test
*
* Created by tianjun on 2016/12/16 0016.
*/
public class SimpleDemo {
//会话超时时间,设置为与系统一致
private static final int SESSION_TIMEOUT = 30000;
ZooKeeper zk = null;
Watcher wh = new Watcher() {
public void process(WatchedEvent watchedEvent) {
System.out.println(watchedEvent.toString());
}
};
private void createZKInstance() throws IOException{
zk = new ZooKeeper("192.168.64.104:2181",SimpleDemo.SESSION_TIMEOUT,this.wh);
}
private void zkOperations() throws KeeperException, InterruptedException {
System.out.println("1.创建zookeeper节点(znode:zoo2,数据:mydata2,权限:OPNE_ACL_UNSAFE,节点类型:Persisent");
zk.create("/zoo2","mydata2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("2.查看是否创建成功:");
System.out.println(new String(zk.getData("/zoo2",false,null)));
System.out.println("3.修改节点数据");
zk.setData("/zoo2","tianjun2016".getBytes(),-1);
System.out.println("4.查看是否修改成功:");
System.out.println(new String(zk.getData("/zoo2",false,null)));
System.out.println("5.删除节点");
zk.delete("/zoo2",-1);
System.out.println("6.查看节点是否被删除:");
System.out.println("节点状态:[" + zk.exists("/zoo2",false)+"]");
}
private void zkClose() throws InterruptedException {
if(zk != null){
zk.close();
}
}
public static void main(String[] args) throws InterruptedException, KeeperException, IOException {
SimpleDemo dm = new SimpleDemo();
dm.createZKInstance();
dm.zkOperations();
dm.zkClose();
}
}
最后的结果:
1.创建zookeeper节点(znode:zoo2,数据:mydata2,权限:OPNE_ACL_UNSAFE,节点类型:Persisent
WatchedEvent state:SyncConnected type:None path:null
2.查看是否创建成功:
mydata2
3.修改节点数据
4.查看是否修改成功:
tianjun2016
5.删除节点
6.查看节点是否被删除:
节点状态:[null]