前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZooKeeper的Java API操作

ZooKeeper的Java API操作

作者头像
大数据梦想家
发布2021-01-21 19:49:00
4030
发布2021-01-21 19:49:00
举报

本篇博客小菌为大家带来期待已久的关于ZooKeeper的JavaAPI操作!!!

在向大家展示代码之前,先为大家介绍几个需要使用到的类!

  • org.apache.zookeeper.Zookeeper Zookeeper 是在Java中客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。
  • org.apache.zookeeper.Watcher Watcher接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。

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

基本使用

接下来正式进入到JavaAPI的正常使用

首先我们需要建立java maven项目,引入maven pom坐标

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.9</version>
</dependency>

基础操作案例:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
        // 初始化 ZooKeeper实例(zk地址、会话超时时间,与系统默认一致、watcher)
        ZooKeeper zk = new ZooKeeper("node-1:2181,node-2: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("/myGirls", "性感的".getBytes("UTF-8"), Ids.OPEN_ACL_UNSAFE,
		 CreateMode.PERSISTENT);
      zk.close();

更多操作示例:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
        // 初始化 ZooKeeper实例(zk地址、会话超时时间,与系统默认一致、watcher)
        ZooKeeper zk = new ZooKeeper("node-21:2181,node-22: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();
}

因为Java API的操作比较偏向于基础,另外重点的地方都有对应的注释,所以小菌在这里就不为大家作详细说明了!

那么本次的分享就到这里,大家有什么疑惑可以在评论区留言或者私信小菌。另外,受益的小伙伴们或对大数据技术感兴趣的朋友可以关注小菌哟~点赞加关注,小白不迷路!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档