所需要6个jar包,都是解压zookeeper的tar包后里面的。

    zookeeper-3.4.10.jar     jline-0.094.jar      log4j-1.2.16.jar

    netty-3.10.5.jar       slf4j-api-1.6.1.jar     slf4j-log4j12-1.6.1.jar

1.建立连接

/**
* connectString : zk服务器连接ip和端口,多个用逗号隔开
* sessionTimeout   : 连接超时时间
* watcher : 监听器(当被监控的节点发生改变时,zk会通过watcher传递给我们)
*/
#ZooKeeper zkCli = new ZooKeeper(connectString,sessionTimeout,watcher );
ZooKeeper zkCli = new ZooKeeper("192.168.199.15:2181,192.168.199.16:2181", 2000, new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println("节点:"+event.getPath()+"发生了事件:"+event.getType());
  }
});

2.创建节点

public void testCreateNode() throws Exception {
/**
* path :节点创建的路径
* data :节点创建要保存的数据,是个byte类型的
* acl :节点创建的权限信息(4种类型)
* ANYONE_ID_UNSAFE : 表示任何人
* AUTH_IDS :此ID仅可用于设置ACL。它将被客户机验证的ID替换。
* OPEN_ACL_UNSAFE :这是一个完全开放的ACL(常用)
* CREATOR_ALL_ACL :此ACL授予创建者身份验证ID的所有权限
* createMode :创建节点的类型(4种类型)
* PERSISTENT:永久节点
* EPHEMERAL:临时节点
* PERSISTENT_SEQUENTIAL:永久节点、序列化
* EPHEMERAL_SEQUENTIAL:临时节点、序列化
*/
    # String node = zkCli.create(path,data,acl,createMode);
String node_PERSISTENT = zkCli.create("/zpb", "zk创建节点".getBytes("utf-8"), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
String node_EPERSISTENT = zkCli.create("/zpb/zk", "2181".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
System.out.println("创建的永久节点是:"+node_PERSISTENT);
System.out.println("创建的临时节点是:"+node_EPERSISTENT);
Thread.sleep(Long.MAX_VALUE); //查看临时节点时,防止zkCli退出 }
另:通过连接服务器端用命令查看结果:

   

   备注:客户端创建永久节点时,zkCli 与服务端断开连接后,查看节点信息是存在的,反之临时节点与服务器断开连接后是不存在的

3.获取节点数据 

public void getNodeData() throws Exception {
/**
* path : 获取数据的路径
* watch : 是否开启监听
* stat : 查看哪个版本的数据(节点上可能会保存多个版本的数据)
* null: 表示获取最新版本的数据
*
*
*/
#zkCli.getData(path, watch, stat);
byte[] data = zkCli.getData("/zpb", true, null);
System.out.println(new String(data,"utf-8")); }

4.修改节点数据

public void testUpdateNodeData() throws Exception {
/**
* path : 修改节点的路径
* data : 要修改的数据
* version :修改哪个版本的数据
* -1: 匹配所有版本
*/
// zkCli.setData(path, data, version) ①详见建立连接;
②byte[] data = zkCli.getData("/zpb", true, null);
System.out.println("修改之前的数据是:"+new String(data,"utf-8")); ③Stat setData = zkCli.setData("/zpb", "zk修改节点".getBytes("utf-8"), -1); ④data = zkCli.getData("/zpb", true, null);
System.out.println("修改之后的数据是:"+new String(data,"utf-8")); }
输出的结果:
节点:null发生了事件:None
修改之前的数据是:zk创建节点
节点:/zpb发生了事件:NodeDataChanged
修改之后的数据是:zk修改节点
执行顺序:
在创建客户端成功后,有1个Watcher事件,然后打印输出,当zkCli获取数据时设置了监听该节点的数据true,接着输出修改之前的数据,当zkCli修改数据后,
负责监听的watcher事件被触发,zkCli再次获取修改后的数据,并再次设置监听

5.删除节点

public void testDel() throws Exception {

        // zkCli.delete(path, version);
Stat exists_1 = zkCli.exists("/zpb", true);
System.out.println(exists_1 == null ? "节点被删除了" : "节点没有被删除");
zkCli.delete("/zpb", -1); //-1表示匹配所有版本
Stat exists_2 = zkCli.exists("/zpb", true);
System.out.println(exists_2 == null ? "节点被删除了" : "节点没有被删除");
}

ZooKeeper的API操作(二)(通俗易懂)的更多相关文章

  1. ZooKeeper 原生API操作

    zookeeper客户端和服务器会话的建立是一个异步的过程,也就是说在程序中,程序方法在处理完客户端初始化后立即返回(即程序继续往下执行代码,这样,在大多数情况下并没有真正的构建好一个可用会话,在会话 ...

  2. 五、Zookeeper基于API操作Node节点

    安装zookeeper :linux下安装Zookeeper 3.4.14 zookeeper 分为5个包: org.apache.zookeeper //客户端主要类文件 org.apache.zo ...

  3. Azure Cosmos DB (二) SQL API 操作

    一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...

  4. Zookeeper C API 指南三(回调函数)(转)

    2013-02-21 12:54 by Haippy, 9237 阅读, 0 评论, 收藏, 编辑 接上一篇<Zookeeper C API 指南二(监视(Wathes), 基本常量和结构体介绍 ...

  5. 六、Java API操作zookeeper节点

    目录 前文 pom.xml文件增加依赖 新建java文件:ZookeeperTest GitHub文件下载 前文 一.CentOS7 hadoop3.3.1安装(单机分布式.伪分布式.分布式 二.JA ...

  6. zookeeper学习系列:二、api实践

    上一章我们知道zookeeper的简介,启动,设置节点以及结构性能.本小节我们来玩玩api,获取下数据. php版本: http://anykoro.sinaapp.com/2013/04/05/%E ...

  7. zookeeper的java api操作

    zookeeper的java api操作 创建会话: Zookeeper(String connectString,int sessionTimeout,Watcher watcher) Zookee ...

  8. zookeeper client API实现(python kazoo 的实现)

    这里主要分析zookeeper client API的实现方式,以python kazoo的实现代码为蓝本进行逻辑分析. 一.代码框架及介绍 API分为同步模式和异步模式.同步模式是在异步模式的基础上 ...

  9. 9. 使用ZooKeeper Java API编程

    ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...

随机推荐

  1. mac配置python自然语言处理环境

    一.nltk安装 Ⅰ.工具安装步骤 1.根据python版本从 https://pypi.python.org/pypi/setuptools 下载对应版本的setuptools.然后,在终端下运行, ...

  2. Python的编码问题(一)

    一.什么是编码 可以说,计算机是一个即聪明又笨蛋的家伙.说它聪明,是因为他可以做很多事情,它的强大无需多说,大家应该都有所了解以及感受.但是为什么说它又是个笨蛋呢,因为我们在电脑上写出的每一个字,保存 ...

  3. webpack无法通过 IP 地址访问 localhost 解决方案

    解决方案: 在config里面的index.js里面的module.exports下面的dev下面的host:'localhost' 改为 host:'0.0.0.0',就可以访问啦!

  4. 微信iOS版更新:可批量管理不常联系的朋友

    iOS版微信更新了v6.5.13版本,在新版本当中微信新增加了可批量管理不常联系的朋友功能,同时在群资料页可以查看最近收到的小程序,不过据网友爆料,腾讯在新的更新日志当中已经删除了“批量管理不常联系的 ...

  5. testng的@Factory及其与@DataProvider的区别

    Factory,顾名思意就是工厂,也就是工厂方法,在软件开发中一般结合多态使用,用来根据不同的条件创建不同的类对象. 在这里,Factory一般用来创建一个测试类的多个实例,每个实例属性不同,以执行不 ...

  6. facebook工具xhprof的安装与使用-分析php执行性能(转载)

    下载源码包的网址 http://pecl.php.net/package/xhprof

  7. 主成分分析PCA学习一条龙

    转自:https://yoyoyohamapi.gitbooks.io/mit-ml/content/%E7%89%B9%E5%BE%81%E9%99%8D%E7%BB%B4/articles/PCA ...

  8. 转:WebClient类(温习一下)

    WebClient类提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法. 其实就相当于创建一个请求客户端.可以获取网页和各种各样的信息,包括交互. 通过MSDN来看看WebC ...

  9. 理解android分辨率限定符 layout-sw360dp

    首先,我们来看看单位dp是怎么一回事,dp是一种单位,使用它,你可以在高.低分辨率上获得一样的空间表现,也就是说,它是像素无关的. dp计算公式:160*pix/ppi(pix是你要计算的高度或者宽度 ...

  10. Hbase1.0伪分布式集群启动失败问题

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7340681.html 转载请注明出处 最近抽空折腾自己的虚拟机环境时启动伪分布式Hbase集群一直失败, ...