`

ZooKeeper Java API

 
阅读更多
ZooKeeper提供了Java和C的binding. 本文关注Java相关的API.

准备工作
拷贝ZooKeeper安装目录下的zookeeper.x.x.x.jar文件到项目的classpath路径下.

创建连接和回调接口
首先需要创建ZooKeeper对象, 后续的一切操作都是基于该对象进行的.

ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) throws IOException


以下为各个参数的详细说明:

connectString. zookeeper server列表, 以逗号隔开. ZooKeeper对象初始化后, 将从server列表中选择一个server, 并尝试与其建立连接. 如果连接建立失败, 则会从列表的剩余项中选择一个server, 并再次尝试建立连接.
sessionTimeout. 指定连接的超时时间.
watcher. 事件回调接口.
注意, 创建ZooKeeper对象时, 只要对象完成初始化便立刻返回. 建立连接是以异步的形式进行的, 当连接成功建立后, 会回调watcher的process方法. 如果想要同步建立与server的连接, 需要自己进一步封装.

public class ZKConnection {  
    /** 
     * server列表, 以逗号分割 
     */  
    protected String hosts = "localhost:4180,localhost:4181,localhost:4182";  
    /** 
     * 连接的超时时间, 毫秒 
     */  
    private static final int SESSION_TIMEOUT = 5000;  
    private CountDownLatch connectedSignal = new CountDownLatch(1);  
    protected ZooKeeper zk;  
  
    /** 
     * 连接zookeeper server 
     */  
    public void connect() throws Exception {  
        zk = new ZooKeeper(hosts, SESSION_TIMEOUT, new ConnWatcher());  
        // 等待连接完成  
        connectedSignal.await();  
    }  
  
    public class ConnWatcher implements Watcher {  
        public void process(WatchedEvent event) {  
            // 连接建立, 回调process接口时, 其event.getState()为KeeperState.SyncConnected  
            if (event.getState() == KeeperState.SyncConnected) {  
                // 放开闸门, wait在connect方法上的线程将被唤醒  
                connectedSignal.countDown();  
            }  
        }  
    }  
}  


创建znode
ZooKeeper对象的create方法用于创建znode.

String create(String path, byte[] data, List acl, CreateMode createMode);


以下为各个参数的详细说明:

path. znode的路径.
data. 与znode关联的数据.
acl. 指定权限信息, 如果不想指定权限, 可以传入Ids.OPEN_ACL_UNSAFE.
指定znode类型. CreateMode是一个枚举类, 从中选择一个成员传入即可. 关于znode类型的详细说明, 可参考本人的上一篇博文.

/** 
 * 创建临时节点 
 */  
public void create(String nodePath, byte[] data) throws Exception {  
    zk.create(nodePath, data, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);  
}  


获取子node列表
ZooKeeper对象的getChildren方法用于获取子node列表.

List getChildren(String path, boolean watch); 


watch参数用于指定是否监听path node的子node的增加和删除事件, 以及path node本身的删除事件.

判断znode是否存在
ZooKeeper对象的exists方法用于判断指定znode是否存在.

Stat exists(String path, boolean watch);  


watch参数用于指定是否监听path node的创建, 删除事件, 以及数据更新事件. 如果该node存在, 则返回该node的状态信息, 否则返回null.

获取node中关联的数据
ZooKeeper对象的getData方法用于获取node关联的数据.

byte[] getData(String path, boolean watch, Stat stat); 


watch参数用于指定是否监听path node的删除事件, 以及数据更新事件, 注意, 不监听path node的创建事件, 因为如果path node不存在, 该方法将抛出KeeperException.NoNodeException异常.
stat参数是个传出参数, getData方法会将path node的状态信息设置到该参数中.

更新node中关联的数据
ZooKeeper对象的setData方法用于更新node关联的数据.

Stat setData(final String path, byte data[], int version); 


data为待更新的数据.
version参数指定要更新的数据的版本, 如果version和真实的版本不同, 更新操作将失败. 指定version为-1则忽略版本检查.
返回path node的状态信息.

删除znode
ZooKeeper对象的delete方法用于删除znode.

void delete(final String path, int version); 


version参数的作用同setData方法.

其余接口
请查看ZooKeeper对象的API文档.

需要注意的几个地方
znode中关联的数据不能超过1M. zookeeper的使命是分布式协作, 而不是数据存储.
getChildren, getData, exists方法可指定是否监听相应的事件. 而create, delete, setData方法则会触发相应的事件的发生.
以上介绍的几个方法大多存在其异步的重载方法, 具体请查看API说明

转自:http://coolxing.iteye.com/blog/1871347

参考:http://www.sxt.cn/u/756/blog/4983
分享到:
评论

相关推荐

    zookeeper JAVA API.docx

    Zookeeper Java API 使用指南 Zookeeper 是一个广泛使用的分布式协调服务,提供了高效、可靠、可扩展的解决方案。Java API 是 Zookeeper 的一个重要组件,提供了丰富的接口让开发者可以轻松地使用 Zookeeper。下面...

    zookeeper Java api - curator 5.6.0

    4. **数据操作**:Curator 提供了简单的 API 来读写 ZooKeeper 节点的数据,如 `create()`, `setData()`, `getData()` 等。例如,创建节点和设置数据: ```java client.create().creatingParentsIfNeeded().for...

    ZooKeeper Java API编程实例分析

    ZooKeeper Java API编程实例分析 ZooKeeper Java API编程是 ZooKeeper 的一个重要组件,它提供了 Java 语言的 API 接口,让开发者可以使用 Java 语言编写 ZooKeeper 应用程序。下面我们将详细分析 ZooKeeper Java ...

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

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

    zookeeper_javaAPI-main.zip

    在IT行业中,Zookeeper和Java API的结合使用是分布式系统管理的重要组成部分。Zookeeper是由Apache软件基金会开发的一个开源项目,它提供了一种高效且可靠的分布式协调服务,常用于配置管理、命名服务、集群管理和...

    zookeeper-api基础java案例.zip

    zookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例....

    2、zookeeper基本操作及应用示例(shell、java api、应用场景示例)

    在本文中,我们将深入理解Zookeeper的基本操作,包括通过shell客户端进行交互,以及使用Java API进行编程,并探讨其在实际应用中的示例。 一、Zookeeper Shell操作 1. 连接Zookeeper客户端:使用`zkCli.sh`命令...

    Zookeeper Api(java)入门与应用

    Zookeeper Api(java)入门与应用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储...

    Zookeeper 原生api zkClient Curator操作

    在Java开发中,我们通常使用三种方式来操作Zookeeper:原生API、zkClient和Curator。接下来,我们将详细探讨这三种方式。 **一、Zookeeper原生API** Zookeeper提供了Java API,可以直接与Zookeeper服务器进行交互...

    zookeeper_demo.zip

    在Java环境中,ZooKeeper提供了一套丰富的API,使得开发者能够方便地进行节点操作和Watch机制的使用。本篇文章将深入探讨如何使用Java API在ZooKeeper中进行节点的操作,并介绍Watch观察者的应用。 1. **ZooKeeper...

    zookeeper客户端api使用

    它的客户端API是开发者与ZooKeeper交互的主要接口,提供了丰富的功能,包括数据节点的创建、删除、更新、读取,以及监控事件的订阅等。本文将深入探讨ZooKeeper客户端API的使用方法和核心概念。 ### 1. 连接...

    Java操作Zookeeper

    2. **Zookeeper Java API**:Apache ZooKeeper提供了Java API供开发者进行编程,用于实现分布式服务管理。在Java项目中,我们通常通过Maven或者Gradle来引入Zookeeper的依赖,如上述代码所示引入的是`org.apache....

    java中的zookeeper

    Java提供了ZooKeeper的API,使得我们可以方便地进行节点的创建、读取、更新和删除操作。`01_zookeeper介绍和应用场景.docx`、`02_使用java操作zookeeper创建节点.docx`、`03_使用java操作zk创建节点02.docx`这些文档...

    zookeeper-API开发lib

    ZooKeeper API是开发者与ZooKeeper交互的主要方式,它提供了丰富的Java客户端接口,使得开发者能够方便地进行数据的读写、监控节点变化、创建和删除节点等操作。以下是一些关键的ZooKeeper API知识点: 1. **连接与...

    zookeeperJavaApi

    ZooKeeper Java API 是一套用于与ZooKeeper交互的接口,它允许开发者在Java应用程序中实现对ZooKeeper集群的创建、删除、查看、设置和权限管理等操作。ZooKeeper是一个分布式的协调服务,广泛应用于分布式系统中,如...

    java客户端使用api访问zookeeper,增删改查Znode

    本文将深入探讨如何使用Java客户端API来对Zookeeper的Znode进行增删改查操作,并讨论同步与异步两种方式的使用。 首先,要使用Java客户端API访问Zookeeper,你需要引入相关的依赖。在Maven项目中,可以在pom.xml...

    java连接zookeeper的jar包

    4. **slf4j-api.jar**:Simple Logging Facade for Java,它提供一个简单的API,使得最终用户可以在部署时插入所需的日志库,比如log4j。SLF4J允许在部署时选择不同的日志实现,提高了灵活性。 5. **slf4j-log4j12....

    使用JMX监控Zookeeper状态Java API

    使用JMX监控Zookeeper状态Java API 在分布式系统中,Zookeeper是经常使用的分布式协调服务,用于维护和管理分布式应用程序的配置信息和状态。为了监控Zookeeper的状态,需要使用监控工具来实时监控Zookeeper的运行...

Global site tag (gtag.js) - Google Analytics