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. samtools软件作用

    samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml samtools是一个用于操作sam和bam文件的工具合集,包含有许多命令.以 ...

  2. JAVA数据结构--ArrayList动态数组

    在计算机科学中,动态数组,可扩展数组,可调整数组,动态表,可变数组或数组列表是一种随机存取可变大小列表数据结构,允许添加或删除元素.它提供许多现代主流编程语言的标准库.动态数组克服了静态数组的限制,静 ...

  3. tensorflow-如何防止过拟合

    回归:过拟合情况 / 分类过拟合 防止过拟合的方法有三种: 1 增加数据集 2 添加正则项 3 Dropout,意思就是训练的时候隐层神经元每次随机抽取部分参与训练.部分不参与 最后对之前普通神经网络 ...

  4. 网络那点事之socket队列

    1.socket 在内核中是怎么表示的,怎么与文件系统建立关系 2.socket在什么时候创建了接收队列,接收队列的长度是怎么确定的 3.接收到一个数据包根据怎么找到到接收队列的 使用hash算法,分 ...

  5. TCP/IP网络通信-数据传输

    1.通过网络IP实现数据的传输. 2.服务器端代码  [ 服务端主要通过Socket类来创建一个监听等待客户端连接,服务端发送用send方法,接收用Receive方法] using System.Ne ...

  6. IOS下去掉input submit圆角和

    在iOS系统下input submit会有圆角,如果添加有背景色,背景色出错,在安卓系统是没有这些问题,可以在input样式加上这段样式 input{ -webkit-appearance: none ...

  7. linux系统优化基础

    linux系统优化基础 tags: linux 优化 kingle---### 1, 查看centos版本:cat etc/redhat-release 看看centos架构信息:uname -m 查 ...

  8. 使用Redis 配置替换fastjson 反序列化报错 com.alibaba.fastjson.JSONException: autoType is not support

    新建的GenericFastJson2JsonRedisSerializer里面添加白名 添加: static {        ParserConfig.getGlobalInstance().ad ...

  9. MAYA 卸载工具,完美彻底清除干净maya各种残留注册表和文件

    是不是遇到MAYA/CAD/3DSMAX/INVENTOR安装失败?AUTODESK系列软件着实令人头疼,MAYA/CAD/3DSMAX/INVENTOR安装失败之后不能完全卸载!!!(比如maya, ...

  10. Python 字典的取值

    不能用.取值 .是获取属性或方法 只能用中括号或者get方法 中括号和get中可以放字符串或者变量 get与[]的区别在于当key不存在,get不会报错,而且get可以设置取不到值时返回的默认值.