`

zookeeper常用API

 
阅读更多

zookeeper常用的api,刚刚接触,写博客备忘

 

package com.my.zookeeper;

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

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;

public class ZooKeeperAPI {
static ZooKeeper zook = null;
static {
try {
//创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,
//第二个参数为Session超时时间,
//第三个为节点变化时的回调方法
zook = new ZooKeeper("192.168.229.53:2181", 30000, new Watcher(){
public void process(WatchedEvent e) {
System.out.println("path=" + e.getPath()
+ "state =" + e.getState().name());
}
});

/*try {
zook.exists("/root", true);
} catch (KeeperException e2) {
e2.printStackTrace();
} catch (InterruptedException e2) {
e2.printStackTrace();
}
try {
zook.exists("/root", new Watcher(){
public void process(WatchedEvent e) {
System.out.println("path=" + e.getPath()
+ "state =" + e.getState().name());
}
});
} catch (KeeperException e1) {
e1.printStackTrace();
} catch (InterruptedException e1) {
e1.printStackTrace();
}*/
} catch (IOException e) {
e.printStackTrace();
}
}

void showAPI() {
try {
////创建一个节点root,数据是mydata,不进行ACL权限控制
//节点为永久性的(即客户端shutdown了也不会消失)
zook.create("/root", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//在root下面创建一个childone znode,数据为childone,
//不进行ACL权限控制,节点为永久性的
zook.create("/root/childone", "childone".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

try {
//取得/root节点下的子节点名称,返回List<String>
List<String> childNodeList = zook.getChildren("/root", true);
System.out.println(childNodeList.size());
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

//取得/root/childone节点下的数据,返回byte[]
try {
byte[] childData = zook.getData("/root/childone", true, null);
System.out.println(childData.length);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

try {
//修改节点/root/childone下的数据,第三个参数为版本,
//如果是-1,那会无视被修改的数据版本,直接改掉
zook.setData("/root/childone", "childonemodify".getBytes(), -1);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

try {
//删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本
zook.delete("/root/childone", -1);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (KeeperException e) {
e.printStackTrace();
}

//关闭session
try {
zook.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public static void main(String[] args) throws KeeperException, InterruptedException, IOException {
//取得gateway-schedule节点下的子节点名称,返回List<String>
List<String> childNodeList = zook.getChildren("/gateway-schedule", true);
for(String s : childNodeList) {
System.out.println("s = " + s);
}
System.out.println(childNodeList.size());
//zook.create("/root", "mydata".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//zook.create("/root/childone", "child3".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//zook.create("/root/childtwo", "childtwo".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//zook.create("/root/child3", "child3".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
//zook.setData("/root/childtwo", "childtwomodify".getBytes(), -1);

/*byte[] childData = zook.getData("/root/childone", true, null);
System.out.println("childData.length="+childData.length + ",childData=" + new String(childData));*/
//zook.delete("/root/childtwo", -1);

showAllChild();

System.in.read();
}

/**
* show all first nodes
* @throws KeeperException
* @throws InterruptedException
*/
static void showAllChild() throws KeeperException, InterruptedException {
//
List<String> firstNodeList = zook.getChildren("/", true);
for(String s : firstNodeList) {
System.out.println("s = " + s);
}
System.out.println(firstNodeList.size());
}
}

分享到:
评论

相关推荐

    ZooKeeper Java API

    **ZooKeeper Java API**是Apache ZooKeeper项目的一部分,它为Java开发者提供了便捷的方式来与ZooKeeper集群进行交互。ZooKeeper是一个分布式的、开放源码的服务,主要用于维护配置信息、命名服务、分布式同步和组...

    zookeeper_javaAPI-main.zip

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

    zookeeper 操作代码 部分可用,

    在本资料中,"zookeeper 操作代码 部分可用"可能是指包含了一些使用ZooKeeper API进行操作的示例代码,但这些代码可能并非全部都能正常运行。 首先,我们需要理解ZooKeeper的主要功能:它提供了一种有序、可靠的...

    3天全面深入学习zookeeper视频教程

    zookeeper常用shell命令 zookeeper的Acl权限控制 zookeeper的javaApi zookeeper 事件监听机制 zookeeper 集群搭建 一致性协议:zab协议 zookeeper的leader选举 observer角色及其配置 zookeeperAPI连接集群 zookeeper ...

    zookeeper-3.9.1.zip

    6. **docs** 目录:包含Zookeeper的文档,包括用户手册和API参考,帮助用户理解和使用Zookeeper。 7. **zkData** 目录:也需用户手动创建,用于存放Zookeeper的事务日志和快照,这是Zookeeper持久化数据的地方。 在...

    使用JMX监控Zookeeper状态Java API

    Java Management Extensions(JMX)是一种常用的监控工具,通过JMX可以实时监控Zookeeper的状态。 JMX是一种Java API,用于监控和管理Java应用程序。它提供了一组API,允许Java应用程序和允许的工具监视和管理Java...

    zookeeper-3.4.11安装包

    ZooKeeper提供了多种客户端,包括命令行客户端、Java API以及各种语言的SDK,如Python、C++、Go等。这些客户端允许开发者创建、删除和更新ZNode(ZooKeeper中的数据节点),并订阅ZNode变化事件。 **ZooKeeper的...

    zookeeper使用总结

    #### Zookeeper CAPI 简介 - **Watches** - **监视函数原型** Zookeeper 的监视功能允许客户端监控特定的 znode 变更。监视事件是一次性的,即一旦被触发就不再有效,直到重新设置监视。 - **常用 API** - `...

    zookeeper中文文档

    Zookeeper在实际的应用场景中可以用于实现统一命名服务、配置管理、集群管理、共享锁、队列管理、障碍墙、互斥锁、读写锁等多种功能,这些都是分布式系统中常用的功能。 本文档的作者是百度在线网络技术(北京)...

    zookeeper实战

    Curator的常用API包括但不限于:处理连接状态变化、简化节点创建/删除操作、锁的实现等。 ZooKeeper的领导者选举采用了一种称为Paxos的算法,确保在发生领导人故障时,可以快速有效地选举出新的领导人。Paxos算法...

    zookeeper示例代码。

    7. **ZkClient应用**:ZkClient是另一个常用的ZooKeeper客户端,它提供了丰富的API,易于理解和使用。除了基本的ZNode操作,还支持异步调用、事件监听等功能,适用于开发需要实时监控ZooKeeper变化的应用。 在`...

    zookeeper-3.4.11.zip

    在Dubbo框架中,Zookeeper作为常用的服务注册中心,扮演着至关重要的角色。本文将深入探讨Zookeeper 3.4.11版本的功能特性及其在Dubbo中的应用。 一、Zookeeper简介 Zookeeper由Apache基金会开发,基于Java实现,...

    netty-redis-zookeeper高并发实战学习-netty-redis-zookeeper.zip

    3. ZooKeeper的API和使用方式,包括ZNode的创建、读写操作、会话和 watches 的管理。 4. 分布式系统的概念,以及ZooKeeper如何解决分布式环境中的问题,如一致性、可用性和容错性。 5. 如何结合Netty、Redis和...

    apache-zookeeper-3.6.2-bin

    - Java客户端是Zookeeper最常用的接口,提供了丰富的API进行ZNode的操作,如`create()`, `exists()`, `getData()`, `getChildren()` 和 `setData()`。 - 客户端也可以通过`connect()`方法连接到Zookeeper服务器,...

    zookeeper客户端

    **Zookeeper客户端详解** Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着...无论是Java API还是命令行工具,都能帮助我们有效地与Zookeeper交互,实现各种分布式应用的需求。

    zookeeper-3.5.5.rar

    3. 新增API:提供了更多的客户端API,使得开发者可以更方便地进行操作和监控。 4. 安全性改进:加强了权限控制和认证机制,提供了更加安全的运行环境。 5. 监控与诊断:增强了日志记录和监控工具,帮助管理员更好...

    zookeeper测试程序c++

    首先,要使用 C++ 连接 Zookeeper,我们需要包含 Zookeeper 的 C API 头文件,并链接对应的库。在 Linux 环境下,这通常涉及安装 Zookeeper 的开发库,如 `libzookeeper-mt-dev`。接下来,我们需要理解 Zookeeper 的...

    maven-zookeeper

    Curator提供了一套完整的API,用于创建、删除、检查Zookeeper节点,以及监听节点变化等操作。它还包括了一些高级特性,如recipes,如分布式锁、分布式计数器、领导选举等,这些recipes是解决分布式系统常见问题的...

    zookeeper-3.36

    2. 集群模式:生产环境常用,需配置多个Server实例,并设定集群配置。 3. 安全配置:可以通过SSL进行通信加密,提升安全性。 五、Zookeeper的应用场景 1. Hadoop HDFS:Hadoop中的NameNode依赖Zookeeper进行元数据...

Global site tag (gtag.js) - Google Analytics