zookeeper安装
下载与配置
》http://mirrors.hust.edu.cn/apache/zookeeper 下载一个版本
》解压
》找到目录conf 下创建 zoo.cfg 文件,默认就是加载这个文件,然后修改些东西
#zoo.cfg 的内容 # 心跳检查的时间 2秒 tickTime=2000 # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒 initLimit=10 # ZK Leader 和follower 之间通讯的次数,总时间5*2=10秒 syncLimit=5 # 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。 dataDir=C:\\test\\tmp\\zookeeper # 错误日志的存放位置 dataLogDir=C:\\test\\log\\zookeeper
# ZK 服务器端的监听端口 clientPort=2181
|
启动
》进入到bin目录,启动,执行zkServer.cmd 就启动成功了
3》客户端添加节点代码
public static final String ROOT = "/root"; //根节点
public static void main( String[] args ) throws Exception {
//1.创建一个与服务器的连接
ZooKeeper zooKeeper = new ZooKeeper("localhost:2181", 3000, new Watcher() {
//监控所有被触发的事件
@Override
public void process(WatchedEvent event) {
System.out.println("状态State:" + event.getState());
System.out.println("类型Type:" + event.getType());
System.out.println("Wrapper:" +event.getWrapper());
System.out.println("路径Path:" + event.getPath());
}
});
//2.创建节点
//2.1 创建根节点,不控制权限,这里需要用持久化节点,不然下面的节点创建容易出错
//zooKeeper.create("/root","/root".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//2.2 子节点,持久化顺序编号目录节点
// zooKeeper.create("/root/node1","/root/node1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
// zooKeeper.create("/root/node2","/root/node2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
//2.3 子节点 临时目录节点 客户端与zookeeper断开连接后,该节点被删除
//zooKeeper.create("/root/node3", "/root/node3".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
//2.4 子节点 session 过期自动删除,也会加数字的后缀
//zooKeeper.create("/root/node4", "/root/node4".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
//3.查看节点
List<String> ktvs = zooKeeper.getChildren(ROOT, true);
System.out.println("所有子节点:" + Arrays.toString(ktvs.toArray()));
//4.删除子节点
for (String nodeId : ktvs){
zooKeeper.delete(ROOT + "/" + nodeId,-1);
}
//删除根节点
zooKeeper.delete(ROOT,-1);
zooKeeper.close();
}
依赖:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.12</slf4j.version>