1)ZooKeeper API 简介
ZooKeeper API 共包含 5 个包,分别为: org.apache.zookeeper , org.apache.zookeeper.data ,org.apache.zookeeper.server , org.apache.zookeeper.server.quorum 和org.apache.zookeeper.server.upgrade 。其中 org.apache.zookeeper 包含 ZooKeeper 类,它我们编程时最常用的类文件。
这个类是 ZooKeeper 客户端库的主要类文件。如果要使用 ZooKeeper 服务,应用程序首先必须创建一个Zookeeper 实例,这时就需要使用此类。一旦客户端和 ZooKeeper 服务建立起连接, ZooKeeper 系统将会分配给此连接回话一个 ID 值,并且客户端将会周期地向服务器发送心跳来维持会话的连接。只要连接有效,客户端就可以调用 ZooKeeper API 来做相应的处理。
它提供了表 1 所示几类主要方法 , :
表 1 : ZooKeeper API 描述
功能 |
描述 |
create |
在本地目录树中创建一个节点 |
delete |
删除一个节点 |
exists |
测试本地是否存在目标节点 |
get/set data |
从目标节点上读取 / 写数据 |
get/set ACL |
获取 / 设置目标节点访问控制列表信息 |
get children |
检索一个子节点上的列表 |
sync |
等待要被传送的数据 |
2)ZooKeeper API 的使用
这里,笔者通过一个例子来简单介绍,如何使用 ZooKeeper API 编写自己的应用程序,见代码清单 1 :
代码清单 1 : ZooKeeper API 的使用
1. import java.io.IOException;
2.
3. import org.apache.zookeeper.CreateMode;
4. import org.apache.zookeeper.KeeperException;
5. import org.apache.zookeeper.Watcher;
6. import org.apache.zookeeper.ZooDefs.Ids;
7. import org.apache.zookeeper.ZooKeeper;
8.
9. public class demo {
10. // 会话超时时间,设置为与系统默认时间一致
11. private static final int SESSION_TIMEOUT=30000;
12.
13. // 创建 ZooKeeper 实例
14. ZooKeeper zk;
15.
16. // 创建 Watcher 实例
17. Watcher wh=new Watcher(){
18. public void process(org.apache.zookeeper.WatchedEvent event)
19. {
20. System.out.println(event.toString());
21. }
22. };
23.
24. // 初始化 ZooKeeper 实例
25. private void createZKInstance() throws IOException
26. {
27. zk=new ZooKeeper("localhost:2181",demo.SESSION_TIMEOUT,this.wh);
28.
29. }
30.
31. private void ZKOperations() throws IOException,InterruptedException,KeeperException
32. {
33. System.out.println("/n1. 创建 ZooKeeper 节点 (znode : zoo2, 数据: myData2 ,权限:OPEN_ACL_UNSAFE ,节点类型: Persistent");
34. zk.create("/zoo2","myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
35.
36. System.out.println("/n2. 查看是否创建成功: ");
37. System.out.println(new String(zk.getData("/zoo2",false,null)));
38.
39. System.out.println("/n3. 修改节点数据 ");
40. zk.setData("/zoo2", "shenlan211314".getBytes(), -1);
41.
42. System.out.println("/n4. 查看是否修改成功: ");
43. System.out.println(new String(zk.getData("/zoo2", false, null)));
44.
45. System.out.println("/n5. 删除节点 ");
46. zk.delete("/zoo2", -1);
47.
48. System.out.println("/n6. 查看节点是否被删除: ");
49. System.out.println(" 节点状态: ["+zk.exists("/zoo2", false)+"]");
50. }
51.
52. private void ZKClose() throws InterruptedException
53. {
54. zk.close();
55. }
56.
57. public static void main(String[] args) throws IOException,InterruptedException,KeeperException {
58. demo dm=new demo();
59. dm.createZKInstance( );
60. dm.ZKOperations();
61. dm.ZKClose();
62. }
63.}
此类包含两个主要的 ZooKeeper 函数,分别为 createZKInstance ()和 ZKOperations ()。其中createZKInstance ()函数负责对 ZooKeeper 实例 zk 进行初始化。 ZooKeeper 类有两个构造函数,我们这里使用“ ZooKeeper ( String connectString, , int sessionTimeout, , Watcher watcher )”对其进行初始化。因此,我们需要提供初始化所需的,连接字符串信息,会话超时时间,以及一个 watcher 实例。 17 行到 23 行代码,是程序所构造的一个 watcher 实例,它能够输出所发生的事件。
ZKOperations ()函数是我们所定义的对节点的一系列操作。它包括:创建 ZooKeeper 节点( 33 行到 34行代码)、查看节点( 36 行到 37 行代码)、修改节点数据( 39 行到 40 行代码)、查看修改后节点数据( 42行到 43 行代码)、删除节点( 45 行到 46 行代码)、查看节点是否存在( 48 行到 49 行代码)。另外,需要注意的是:在创建节点的时候,需要提供节点的名称、数据、权限以及节点类型。此外,使用 exists 函数时,如果节点不存在将返回一个 null 值。关于 ZooKeeper API 的更多详细信息,读者可以查看 ZooKeeper 的 API 文档,如下所示:
相关推荐
**Zookeeper API(Java)入门详解** Zookeeper是一款分布式协调服务,由Apache基金会开发,它为分布式应用提供一致性服务,包括命名服务、配置管理、集群同步、分布式锁等。在Java开发中,我们通常会使用Zookeeper...
ZooKeeper API 是 Apache ZooKeeper 的一套应用程序接口,它允许开发者在其应用程序中使用 ZooKeeper 集群提供的服务。ZooKeeper 是一个开源的分布式协调服务,常用于分布式应用程序中,用于解决共识、同步、组管理...
zookeeper-api基础 Zookeeper Api(java)入门与应用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper ...
此为zookeeper的官方文档,方面对zookeeper的学习和开发
Zookeeper C API 中文文档 Zookeeper C API 是 Zookeeper 的一个 C 语言实现,提供了一个简洁的 API,让开发者可以轻松地使用 Zookeeper 的功能。本文档将详细介绍 Zookeeper C API 的使用方法和相关知识点。 ...
ZooKeeper API是开发者与ZooKeeper交互的主要方式,它提供了丰富的Java客户端接口,使得开发者能够方便地进行数据的读写、监控节点变化、创建和删除节点等操作。以下是一些关键的ZooKeeper API知识点: 1. **连接与...
它的编程API提供了丰富的功能,使得开发者能够方便地与Zookeeper交互。以下是对Zookeeper API的一些关键知识点的详细说明: 1. **初始化连接**: 在使用Zookeeper API之前,你需要创建一个`ZooKeeper`实例,通常...
在Java环境下使用Zookeeper,我们需要引入相应的API库,这通常涉及到在构建路径中添加Zookeeper的JAR包。 首先,如果你是通过Eclipse进行开发,可以在项目的`buildPath`中直接引入`zookeeper-3.4.9.jar`,这个文件...
### Apache Zookeeper API 基础 #### 一、Zookeeper 概览 Apache Zookeeper 是一款开源的分布式协调服务框架,它通过提供一系列的原语来帮助开发者解决分布式环境中常见的问题,例如命名服务、配置维护、集群管理...
《Zookeeper API基础》 Zookeeper是一个分布式协调服务,它为分布式应用提供一致性服务,包括命名服务、配置管理、集群同步、组服务等。在深入理解Zookeeper的使用之前,我们首先需要熟悉其API的基础知识。 一、...
zookeeper编程的API 在分布式处理的开发上很有用
- **Zookeeper API基础(BasicsofZooKeeperAPI)**:概述Zookeeper API的基本概念。 - **Java绑定(JavaBinding)**:提供如何使用Java语言与Zookeeper进行交互的指导。 - **连接到Zookeeper(ConnecttotheZooKeeper)*...
标题中的“java handler zookeeper for zk's api”指的是在Java中使用Zookeeper的API来处理相关的操作。Zookeeper是一个分布式协调服务,常用于管理分布式应用的配置信息、命名服务、集群状态、选举等功能。在Java中...
每个API背后都对应着Zookeeper内部的一系列处理流程,例如,创建ZNode需要进行权限检查、事务序列化、提交到ZAB协议等步骤。 六、Zookeeper集群配置与管理 Zookeeper集群通过配置文件(zoo.cfg)设定,包括服务器...
第7章介绍C语言版的API接口,也可以作为非Java语言实现的ZooKeeperAPI的基础,对非Java语言的开发人员非常有帮助。第8章介绍一款更高层级的封装的ZooKeeper接口。第三部分(第9~10章)主要介绍ZooKeeper内部原理及...
第7章介绍C语言版的API接口,也可以作为非Java语言实现的ZooKeeperAPI的基础,对非Java语言的开发人员非常有帮助。第8章介绍一款更高层级的封装的ZooKeeper接口。第三部分(第9~10章)主要介绍ZooKeeper内部原理及...
ZooKeeper提供了多种API,包括Create、Exists、Delete、Get data、Set data、Get ACL、Set ACL等。这些API可以帮助开发者实现分布式协调服务,维护和监控存储数据状态的变化。 ZooKeeper数据模型 ZooKeeper的数据...
此外,`zookeeper-client`模块包含了客户端API的实现,如`org.apache.zookeeper.ZooKeeper`类,它是客户端与ZooKeeper服务器通信的主要接口。理解这个类以及它提供的方法,如`create()`, `getChildren()`, `exists()...
第7章介绍C语言版的API接口,也可以作为非Java语言实现的ZooKeeperAPI的基础,对非Java语言的开发人员非常有帮助。第8章介绍一款更高层级的封装的ZooKeeper接口。第三部分(第9~10章)主要介绍ZooKeeper内部原理及...