所需要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 ? "节点被删除了" : "节点没有被删除");
}

转载于:https://www.cnblogs.com/MrRightZhao/p/10463494.html

ZooKeeper的API操作(二)(通俗易懂)相关推荐

  1. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作

    目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...

  2. Zookeeper C API 指南

    以前自己的博客中转载.翻译或写过(不过自己才疏学浅,写的不好)一些 Zookeeper 方面的文章,但是都没有涉及到 Zookeeper C API 的内容,今天的这篇博客是我农历新年的第一篇技术博客 ...

  3. Apache ZooKeeper - 使用原生的API操作ZK_ACL权限

    文章目录 Pre Code 创建world模式的节点 使用授权模式创建节点 使用授权模式获取节点数据 Pre Apache ZooKeeper - ZK的ACL权限控制( Access Control ...

  4. Apache ZooKeeper - 使用原生的API操作ZK

    文章目录 概述 maven依赖 验证 测试基类 ZK构造函数参数 connectString:ZooKeeper服务器列表 sessionTimeout:会话的超时时间, "毫秒" ...

  5. zkcli远程连接_ZooKeeper 学习笔记(二)-API 操作和应用

    客户端 znode 可能含有数据,也可能没有.如果 znode 包含数据,那么数据存储为字节数组(byte array).字节数组的具体格式特定于每个应用的实现,ZooKeeper 不直接 提供解析支 ...

  6. Zookeeper常用命令操作,javaAPI操作之Curator框架 API

    浅谈:Zookeeper Zookeeper 概念 • Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务. • Zookeeper 翻译过来就是 动物园管理员 ...

  7. Zookeeper_原生API操作(二)

    在有curator这个框架之前的时候,然后zookeeper怎么去实现分布式锁,就是利用刚才的那种方案,就是可以去实现,你会有各种各样的疑问,你刚才讲的设计是得先get一下,你不如直接create,因 ...

  8. 二, 大数据基础架构Hadoop-HDFS入门和基本操作(基本组成, Shell操作, API操作, 读写流程) hf

    一, HDFS概述 1.1 HDFS的产生背景和定义 随着数据量越来越大,我们需要把文件分布存储到多台计算机上,分布式文件管理系统作为一种管理多台机器上文件的系统应运而生, HDFS是其中的一种. H ...

  9. 实验二 HDFS的Shell命令操作,和HDFS的API操作

    文章目录 实验目的 一. 实验原理 二.实验准备 实验内容 步骤 项目1 HDFS常见命令练习 列出HDFS当前用户家目录下的文件及文件夹: 列出HDFS文件下名为directory的文件夹中的文件: ...

最新文章

  1. python共享内存和分布式实现异步加载数据
  2. 编写书籍《C语言嵌入式系统编程修炼之道》序言
  3. 【UVA624 01背包中的路径问题】
  4. 盘点“逆市上涨”BZ第一季度回购亮点
  5. 自定义封装 banner 组件
  6. 开放接口加密方案_27种开放式解决方案,适用于所有教育
  7. C# 用IrisSkin4.dll美化你的WinForm
  8. 31muduo_net库源码分析(七)
  9. 信号的捕捉与sigaction函数
  10. PPPoE原理和实验
  11. LibMeshEquationSystem 类接口
  12. python绘图工具reportlab介绍
  13. 使用SEGGER Jlink下载hex文件
  14. 微信小程序获取手机号
  15. Vue检测web端和移动端,并强制手机横屏
  16. 如何解决取ADO的Recordset对象的RecordCount属性总是-1问题
  17. 关于 Unicode 每个程序员应该知道的 5 件事
  18. 桂林游记, 终于完成了,
  19. 07_建造者模式(方式一)
  20. GPS参数提取与轨迹重现实验

热门文章

  1. 【记录】台式机的组装
  2. 修改ubuntu崩溃转储的设置
  3. [置顶] 某大型银行深化系统技术方案之二十:代码结构
  4. Purism 发布 PureBoot:高度安全、完整的 Linux 引导流程
  5. 飞天技术汇|阿里云推出全新开发者服务,技术赋能开发者
  6. 上班第一天(5)--一个程序员的成长史(14)
  7. 苹果手机微信上form表单提交的问题
  8. 翻转单词顺序与左旋转字符串
  9. winphone8 模拟器设置(新)
  10. Win32 结构化异常处理(SEH)探秘【下篇】