`
suko
  • 浏览: 74635 次
  • 性别: Icon_minigender_1
  • 来自: 富安
社区版块
存档分类
最新评论

ZooKeeper之java客户端访问-入门介绍

阅读更多

时间 2014-03-22 22:42:48  CSDN博客
原文  http://blog.csdn.net/fengspg/article/details/21805075
主题 ZooKeeper Java
上篇简单的介绍了单点部署ZooKeeper及节点管理。

这里介绍下如何通过java客户端进行各个节点的管理。

具体就不一一介绍,相信从代码的注释中就可以看明白

首先创建一个zookeeper的基础类,里面包含了基本的节点管理方法,如下:

package com.zktest.newtest;

import java.io.IOException;
import java.util.List;
import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

public class BaseZookeeper implements Watcher
{

  public ZooKeeper zooKeeper;

  private static final int SESSION_TIME_OUT = 2000;

  private CountDownLatch countDownLatch = new CountDownLatch(1);

  /**
   * 连接zookeeper
   *
   * @param host
   * @throws IOException
   * @throws InterruptedException
   */
  public void connectZookeeper(String host) throws IOException,
      InterruptedException
  {
    zooKeeper = new ZooKeeper(host, SESSION_TIME_OUT, this);
    countDownLatch.await();
    System.out.println("zookeeper connect ok");

  }

  /**
   * 实现watcher的接口方法,当连接zookeeper成功后,zookeeper会通过此方法通知watcher<br>
   * 此处为如果接受到连接成功的event,则countDown,让当前线程继续其他事情。
   */
  @Override
  public void process(WatchedEvent event)
  {
    if (event.getState() == KeeperState.SyncConnected)
    {
      System.out.println("watcher received event");
      countDownLatch.countDown();
    }
  }

  /**
   * 根据路径创建节点,并且设置节点数据
   * @param path
   * @param data
   * @return
   * @throws KeeperException
   * @throws InterruptedException
   */
  public String createNode(String path, byte[] data) throws KeeperException,
      InterruptedException
  {
    return this.zooKeeper.create(path, data, Ids.OPEN_ACL_UNSAFE,
        CreateMode.PERSISTENT);
  }

  /**
   * 根据路径获取所有孩子节点
   *
   * @param path
   * @return
   * @throws KeeperException
   * @throws InterruptedException
   */
  public List<String> getChildren(String path) throws KeeperException,
      InterruptedException
  {
    return this.zooKeeper.getChildren(path, false);
  }

  public Stat setData(String path, byte [] data, int version) throws KeeperException, InterruptedException
  {
    return this.zooKeeper.setData(path, data, version);
  }
 
  /**
   * 根据路径获取节点数据
   *
   * @param path
   * @return
   * @throws KeeperException
   * @throws InterruptedException
   */
  public byte[] getData(String path) throws KeeperException,
      InterruptedException
  {
    return this.zooKeeper.getData(path, false, null);
  }

  /**
   * 删除节点
   *
   * @param path
   * @param version
   * @throws InterruptedException
   * @throws KeeperException
   */
  public void deletNode(String path, int version)
      throws InterruptedException, KeeperException
  {
    this.zooKeeper.delete(path, version);
  }

  /**
   * 关闭zookeeper连接
   *
   * @throws InterruptedException
   */
  public void closeConnect() throws InterruptedException
  {
    if (null != zooKeeper)
    {
      zooKeeper.close();
    }
  }

}
创建客户端进行测试,代码如下:
package com.spg.zktest.newtest;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import org.apache.zookeeper.KeeperException;

public class Client
{

  /**
   * @param args
   * @throws InterruptedException
   * @throws IOException
   * @throws KeeperException
   */
  public static void main(String[] args) throws IOException, InterruptedException, KeeperException
  {
    BaseZookeeper baseZookeeper = new BaseZookeeper();
   
    String host = "192.168.183.128:2181";
   
    // 连接zookeeper
    baseZookeeper.connectZookeeper(host);
    System.out.println("--------connect zookeeper ok-----------");
   
    // 创建节点
    byte [] data = {1, 2, 3, 4, 5};
    String result = baseZookeeper.createNode("/test", data);
    System.out.println(result);
    System.out.println("--------create node ok-----------");
   
    // 获取某路径下所有节点
    List<String> children = baseZookeeper.getChildren("/");
    for (String child : children)
    {
      System.out.println(child);
    }
    System.out.println("--------get children ok-----------");
   
    // 获取节点数据
    byte [] nodeData = baseZookeeper.getData("/test");
    System.out.println(Arrays.toString(nodeData));
    System.out.println("--------get node data ok-----------");
   
    // 更新节点数据
    data = "test data".getBytes();
    baseZookeeper.setData("/test", data, 0);
    System.out.println("--------set node data ok-----------");
   
    nodeData = baseZookeeper.getData("/test");
    System.out.println(Arrays.toString(nodeData));
    System.out.println("--------get node new data ok-----------");
   
    baseZookeeper.closeConnect();
    System.out.println("--------close zookeeper ok-----------");
  }

}
从命令行中看操作后的结果,如下:
1:根目录下节点


2:查看test节点信息


OK,测试结果到此结束。
分享到:
评论

相关推荐

    dubbo+zk 分发全套教程 附两套实战项目(40G)

    --第05章选举模式和ZooKeeper的集群安装---第06章使用ZooKeeper原生JavaAPI进行客户端开发---第07章ApacheCurator客户端的使用---第08章Dubbo入门到重构服务---第09章分布式锁---第10章课程总结---project.zip---zk_...

    ZookeeperJava客户端zkclient.zip

    简单、高效的Zookeeper Java客户端。 让Zookeeper API 使用起来更简单 非常方便订阅各种事件并自动重新绑定事件(会话建立、节点修改、节点删除、子节点变更等) session过期自动重连、机制 快速入门 下面部分...

    Zookeeper Api(java)入门详解与应用场景

    **Zookeeper API(Java)入门详解** Zookeeper是一款分布式协调服务,由Apache基金会开发,它为分布式应用提供一致性服务,包括命名服务、配置管理、集群同步、分布式锁等。在Java开发中,我们通常会使用Zookeeper...

    zookeeper学习入门-搞懂这些就够了

    ### Zookeeper 学习入门知识点 #### 一、Zookeeper 概述与核心价值 - **定义**: Zookeeper 是一个高度可靠的关键值存储系统,它主要用于解决分布式环境中的一致性问题,例如配置管理、命名服务、分布式同步以及...

    solr入门java工程

    在这个"solr入门java工程"中,我们将探讨如何使用Java客户端与华为FusionInsight SolrTest进行交互,以及如何在SolrCloud模式下进行分布式搜索。 首先,让我们了解Solr的基本概念。Solr的核心功能是提供高效的全文...

    zookeeper学习之三(Curator客户端)

    本篇文章将专注于ZooKeeper的客户端——Curator,这是一个由Apache提供的Java库,旨在简化与ZooKeeper的交互。 Curator客户端是Apache Curator框架的一部分,该框架为开发人员提供了一系列高级API和工具,用于处理...

    dubbo+zookeeper入门实例

    Dubbo是阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,而Zookeeper则是一个分布式服务协调系统,常用于服务注册与发现。在这个实例中,我们将了解如何设置和运行一个简单的Dubbo应用,利用Zookeeper作为...

    Java Netty-入门教程.pdf

    ### Java Netty 入门教程知识点详解 #### 1. Netty 概览 ##### 1.1 Netty 是什么? Netty 是一款基于 Java 的高性能网络应用框架,支持多种协议,包括但不限于 HTTP、FTP、SMTP 等,并且特别擅长处理 TCP 和 UDP ...

    zookeeper入门练习demo

    **Zookeeper入门练习Demo** Zookeeper是一个分布式协调服务,由Apache Hadoop项目开发,广泛应用于分布式计算、配置管理、命名服务、分布式锁等场景。这个"Zookeeper入门练习Demo"旨在帮助初学者快速掌握Zookeeper...

    Zookeeper-Accessor:这是zookeeper客户端用java实现的常用访问器

    Zookeeper-Accessor 自述文件版本 0.1.0 一个zookeeper服务的通用访问器是用java实现的。 Zookeeper-Accessor 由以下组件组成: 发布:使用路径/root(在配置文件中)/service.id/version/sharding/endpoint:value ...

    zookeeper入门学习

    在Java中,可以使用Zookeeper的Java客户端ZKClient或Curator框架来操作Zookeeper。这些库提供了更友好的API,简化了与Zookeeper的交互过程,例如创建会话、注册Watcher、操作Znode等。 总结,Zookeeper作为一个强大...

    zookeeper-dubbo.zip

    2. ** watches**: Zookeeper支持监视机制,客户端可以对某个节点设置监视器,当节点状态发生变化时,Zookeeper会向客户端发送通知。 3. **选举算法**: Zookeeper采用Paxos或ZAB协议实现集群的领导者选举,保证了...

    zookeeper+dubbo入门案例 消费方+提供方

    Dubbo则是构建在Zookeeper之上,提供服务治理能力的框架。它允许服务提供方暴露服务,同时服务消费方调用这些服务。Dubbo的核心特性包括:服务注册与发现、负载均衡、容错机制、服务监控等。 在本入门案例中,...

    尚硅谷大数据技术之Zookeeper1

    尚硅谷大数据技术之Zookeeper1是关于Apache Zookeeper入门教程的一部分,旨在介绍Zookeeper的基本概念、特点、数据结构、应用场景以及如何在本地模式下进行安装和操作。Zookeeper是一个开源的分布式协调服务,它在...

    zookeeper入门到精通架构高级课程

    - **分布式锁**:通过ZooKeeper可以实现不同节点间的互斥访问,从而避免并发操作导致的数据不一致问题。 - **集群管理**:ZooKeeper可以帮助跟踪集群成员状态,当有新节点加入或老节点离开时,可以及时通知其他节点...

    Zookeeper从入门到精通课程资源(未加密)

    通过学习《Zookeeper从入门到精通课程资源》,你可以深入了解Zookeeper的工作原理,掌握其核心功能,以及如何在分布式系统中有效利用Zookeeper解决实际问题。配合提供的"zookeeper视频汇总.txt",系统学习将更加高效...

    Zookeeper中文开发指南

    Zookeeper 提供了丰富的Java和C语言API,包括创建、删除、设置和获取Znode,注册和触发Watcher,以及获取Znode的ACL(访问控制列表)等操作。 **六、Zookeeper的部署与运维** 1. **集群配置**: 配置文件`zoo.cfg`...

    zookeeper 入门学习(PPT)

    ### Zookeeper 入门知识点详解 #### 一、Zookeeper 是什么? Zookeeper是一个用于分布式应用协调服务的软件。它可以维护配置信息、提供命名服务、实现分布式同步,并且支持组服务功能。简单来说,Zookeeper就是一...

    ZooKeeper入门简介及配置使用PDF

    10. **安全性**:探讨ZooKeeper的安全特性,如ACL(访问控制列表)配置,以及如何保护ZooKeeper集群免受未授权访问。 这个PDF文档是初学者理解并掌握ZooKeeper的绝佳资源,它将带你从基础概念出发,逐步深入到实际...

    Zookeeper笔记.docx

    Zookeeper笔记 Zookeeper是一个为分布式应用提供一致性服务的软件,提供配置服务、...这篇笔记提供了 Zookeeper 的基本概念、运行原理、使用方法和应用场景等信息,对于初学者来说可以很快入门 Zookeeper,上手实战。

Global site tag (gtag.js) - Google Analytics