org.apache.zookeeper.Zookeeper

  Zookeeper 是在 Java 中客户端主类,负责建立与 zookeeper 集群的会话,并提供方法进行操作。

 org.apache.zookeeper.Watcher

  Watcher 接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含 KeeperState 和 EventType 两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。

 process 方法是 Watcher 接口中的一个回调方法,当 ZooKeeper 向客户端发送一个 Watcher 事件通知时,客户端就会对相应的 process 方法进行回调,从而实现对事件的处理。

基本使用

  maven的pom依赖

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.4.9</version>
</dependency>

  java代码

 public class ZKClient {

     static ZooKeeper zk = null;

     public static void main(String[] args) throws Exception {

         //第一个参数:zk集群地址  host:port,多个地址之间用英文逗号分隔
//第二个参数:连接会话超时时间 单位为毫秒
//第三个参数:匿名new接口 监听
zk = new ZooKeeper("node-1:2181,node-2:2181,node-3:2181", 30000, new Watcher() {
//该方法为监听触发是回调的方法
public void process(WatchedEvent event) {
int i = 0;
System.out.println(++i);
System.out.println(event.getPath());
System.out.println(event.getType());
System.out.println(event.getState());
//实现永久监听
try {
zk.getData("/itcastbyjava2", true, null);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
// zk.create("/itcastbyjava2","123321".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); //设置监听
zk.getData("/itcastbyjava2", true, null); zk.setData("/itcastbyjava2", "456".getBytes(), -1);
zk.setData("/itcastbyjava2", "789".getBytes(), -1); zk.close();
}
}

其他操作

 public static void main(String[] args) throws Exception {
  // 初始化 ZooKeeper 实例(zk 地址、会话超时时间,与系统默认一致、watcher)
  ZooKeeper zk = new ZooKeeper("node-1:2181,node-2:2181,node-3:2181", 30000, new Watcher() {
    @Override
    public void process(WatchedEvent event) {
      System.out.println("事件类型为:" + event.getType());
      System.out.println("事件发生的路径:" + event.getPath());
      System.out.println("通知状态为:" +event.getState());
    }
  });
  // 创建一个目录节点
  zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE,
    CreateMode.PERSISTENT);
  // 创建一个子目录节点
  zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(),
    Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
  System.out.println(new String(zk.getData("/testRootPath",false,null)));
  // 取出子目录节点列表
  System.out.println(zk.getChildren("/testRootPath",true));
  // 修改子目录节点数据
  zk.setData("/testRootPath/testChildPathOne","modifyChildDataOne".getBytes(),-1);
  System.out.println("目录节点状态:["+zk.exists("/testRootPath",true)+"]");
  // 创建另外一个子目录节点
  zk.create("/testRootPath/testChildPathTwo", "testChildDataTwo".getBytes(),
    Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
  System.out.println(new String(zk.getData("/testRootPath/testChildPathTwo",true,null)));
  // 删除子目录节点
  zk.delete("/testRootPath/testChildPathTwo",-1);
  zk.delete("/testRootPath/testChildPathOne",-1);
  // 删除父目录节点
  zk.delete("/testRootPath",-1);
  zk.close();
}

zookeeper的JavaAPI的更多相关文章

  1. zookeeper系列(二)zookeeper的使用--javaAPI

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败: 出处:http://www.cnblogs.com/leesf456/ (尊重原创,感谢作者整理的这么好,作者的部分内容添加了我的理解 ...

  2. 2. zookeeper介绍及集群搭建

    ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架. 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上 ...

  3. 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解

    ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...

  4. Zookeeper是什么&怎么用

    1.Zookeeper概述 Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题 2:Zookeeper的特点 Zookeeper 本质上是 ...

  5. Zookeeper学习(二)

    一.Znode节点属性 dataVersion 数据版本, 每次当 Znode 中的数据发生变化的时候, dataVersion都会自增一下cversion 节点版本, 每次当 Znode 的节点发生 ...

  6. Zookeeper安装使用及JavaAPI使用

    一.Zookeeper单击模式安装及使用 1.系统环境 2.导入JDK和Zookeeper包 1).使用SecureCRT工具打开SFTP连接,直接拖拽,到当前用户文件夹下,然后使用mv命令(mv 文 ...

  7. zookeeper客户端使用原生JavaApi操作节点

    1.引入依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zook ...

  8. zookeeper分布式锁简单实现(JavaApi)

    1.创建会话连接 package com.karat.cn.zookeeperAchieveLock.javaapilock; import org.apache.zookeeper.WatchedE ...

  9. kafka集群和zookeeper集群的部署,kafka的java代码示例

    来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...

随机推荐

  1. python 的内置模块 re

    在 pattern 的 “” 前面需要加上一个 r 用来表示这是正则表达式, 而不是普通字符串 >>> import re >>> ptn = r"r[a ...

  2. python环境搭建以及pycharm的安装

    要实现python自动化,环境和IDE都是必须的.我选择的是python3.4.4版本以及pycharm社区版.      资源链接:https://pan.baidu.com/s/1hRqyRe3J ...

  3. jQuery常用的方法

    each() 以每一个匹配的元素作为上下文来执行一个函数. size()  jQuery 对象中元素的个数.

  4. [转] JAVA从本机获取IP地址

    [From] https://www.cnblogs.com/xiaoBlog2016/p/7076230.html 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多 ...

  5. mysql 5.7.20 server status 是stopped的解决办法

    mysql 5.7.20 server status 是stopped的解决办法 在安装mysql 5.7.20的过程中,前几个过程都没什么问题,但是最后一个步骤就出问题了.当check一直提示con ...

  6. groovy——运行方式、基本语法、引入方式、metaClass

    jvm运行groovy类有两种方式: 1.使用groovyc编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类. ...

  7. vue之element-ui文件上传

    vue之element-ui文件上传 文件上传需求 ​ 对于文件上传,实际项目中我们的需求一般分两种: 对于单个的文件上传,比如拖动上传个图片之类的,或者是文件. 和表单一起实现上传(这种情况一般都是 ...

  8. oracle 集群RAC搭建(四)--grid部署

    安装教程:

  9. yum lnmp全家桶

    ######################################################### #by:kingle # #use: lnmp # #version:1.0 # # ...

  10. ubuntu java开发环境jdk安装

    1. 下载JDK6安装包,我的为32位系统所以选择jdk-6u35-linux-i586.bin 下载地址:http://www.oracle.com/technetwork/java/javase/ ...