Zookeeper API中包如下:
org.apache.zookeeper
org.apache.zookeeper.data
org.apache.zookeeper.server
org.apache.zookeeper.server.quorum
org.apache.zookeeper.server.upgrade
其中开发者比较常用的包都集中在前两个包中
关于ZooKeeper的安装省略,请参加之前的文章。
下面我们开始用api操作ZooKeeper tree
首先,我们应该新建一个Zookeeper实例:(注意节点创建的时候path命名需要注意,有相关规则的)
ZooKeeper zk = new ZooKeeper("ip:port",3000,new MyWathcer());
Ip和port替换为你Zookeeper
service的ip及服务端口。注意一下第三个参数,它是一个watcher,实现了org.apache.zookeeper.Watcher接口(实现它的process方法即可),对于节点的更新删除等操作会通知客户端,这部分可以参考watches的说明。
接下来,我们新建一个节点:
Id id = new Id("ip","你的zookeeper server的ip");//注意第一个参数代表通过ip验证
ACL acl1 = new ACL(ZooDefs.Perms.ALL,id);//这里表示具备all权限
List<ACL> list = new ArrayList<ACL>();
list.add(acl1);
System.out.println(zk.create("/zk_heih","yun".getBytes(),list, CreateMode.PERSISTENT));//这里表示创建持久的节点
Id类实际上是指你要的访问控制列表ACL应用的目标,而ACL代表应用到该节点的操作权限,最后的CreateMode.PERSISTENT代表你的创建节点的类型,是持久的还是瞬时的。最后方法会返回该节点的path。(如果想建立节点为某节点的子节点,那么写完整path即可,如
/zk_test/zk_ heih)
下面,我们修改节点数据(data)
int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
System.out.println(zk.setData("/zk_ heih ", "my".getBytes(), version));
请注意version,znode在修改时会比较version和服务器上的是否一致,如果不一致的话会抛出异常,当然你也可以将version参数至为-1.那么会匹配所有version,也就是说强制的修改。
然后我们可以查看某节点的数据
Stat stat = new Stat();
byte[] data = zk.getData("/zk_ heih ", new MyWathcer(), stat);//stat会在方法内被修改
System.out.println(new String(data));
System.out.println(stat);
方法会给出相关的stat,stat里面包含了如czid等等,具体参照api
最后我们删除刚才创建的节点:
int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
zk.delete("/zk_ heih ", version);
最后,如果你英语够好,还是看官方的文档吧:
《ZooKeeper Programmer's Guide》
http://hadoop.apache.org/zookeeper/docs/r3.3.0/zookeeperProgrammers.html
分享到:
相关推荐
3. **ZNode操作**:包括创建(`create()`)、读取(`getData()`)、更新(`setData()`)、删除(`delete()`)ZNode等。 4. **事务操作**:可以使用`multi()`方法执行一系列原子性的操作,确保要么全部成功,要么全部...
通过理解ZNode的特点和操作,我们可以在实际应用中灵活地使用ZooKeeper来实现各种复杂的分布式功能。无论是数据存储、服务发现还是分布式锁,ZooKeeper都能够提供高效、可靠的解决方案。 通过本文的介绍和代码示例...
在代码实现中,ZooKeeper的操作主要包括创建、读取、更新和删除ZNodes,以及监听ZNode变化。例如,`create()`方法用于创建ZNode,`exists()`用于检查ZNode是否存在,`getData()`和`setData()`分别用于获取和更新...
在ZooKeeper中,节点(也称为znode)是用于存储数据的基本单元。通过`create`命令可以创建节点,并且可以指定不同的节点类型。 1. **普通节点**: - 普通节点是一种持久存在的节点,即使客户端会话结束,该节点...
接下来,我们来看如何进行基本的Znode操作。 1. 创建Znode: 创建Znode可以通过`create()`方法实现。例如,创建一个名为"/my-znode"的持久化节点: ```java ZooKeeper zookeeper = new ZooKeeper("localhost:2181...
- **ZNode**:Zookeeper中的基本数据单元,每个ZNode都有路径、数据、版本号和ACL。 - **持久化和临时节点**:`-e`参数创建临时节点,会随着客户端断开连接而消失;默认创建的是持久节点。 - **顺序节点**:`-s`...
ZooKeeper 支持多种基本操作,用于管理和访问 ZNode。下面详细介绍这些基本操作: **3.1 创建节点(Create)** - **命令格式:** `create <path> <data> [flags]` - **参数说明:** - `<path>`:待创建节点的路径...
在设计监控场景时,需要考虑到zNode的创建、修改和删除操作对应的处理逻辑。在本示例中,我们使用了ZooKeeper的Watcher机制来监控/watcher节点的变化。当/watcher节点数据发生变化时,程序将打印当前的数据内容和...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
在本文中,我们将深入理解Zookeeper的基本操作,包括通过shell客户端进行交互,以及使用Java API进行编程,并探讨其在实际应用中的示例。 一、Zookeeper Shell操作 1. 连接Zookeeper客户端:使用`zkCli.sh`命令...
ZooKeeper 提供了一个简单的命令行工具 `zkCli.sh`,通过它可以直接与 ZooKeeper 交互,执行基本的操作如创建、读取、更新和删除 ZNode,以及查看集群状态。 7. **安全性** ZooKeeper 支持 SASL 认证和 ACL...
3. **Watcher**:ZooKeeper提供了一种事件监听机制,称为Watcher,允许客户端注册对特定ZNode的兴趣,当ZNode状态发生变化时,ZooKeeper会通知相应的客户端。 **ZooKeeper的工作原理** 1. **主备选举(Leader ...
Zookeeper提供了丰富的命令行工具(`zkCli.sh`),用于创建、删除、读取、更新ZNode以及查看集群状态等操作。例如: - `create`:创建ZNode。 - `delete`:删除ZNode。 - `get`:读取ZNode数据。 - `set`:更新ZNode...
除了基本的ZNode操作,还支持异步调用、事件监听等功能,适用于开发需要实时监控ZooKeeper变化的应用。 在`zookeeperTest`这个示例中,你可以看到如何使用这些概念来实现具体的功能,比如创建ZNode、设置ACL、使用...
这款工具通常包含了一些实用的功能,如查看ZNode(ZooKeeper中的数据节点)信息,执行数据操作,监控会话状态,以及进行集群健康检查等。通过zktools,开发者可以更加直观地管理和调试ZooKeeper集群,提高开发和运维...
Zookeeper 的核心概念包括节点(Znode)、会话(Session)和观察者(Watcher)。Znode 是 Zookeeper 数据存储的基本单位,类似于文件系统中的节点,分为临时节点和永久节点两种。会话是客户端与 Zookeeper 服务器...
- **API**:Zookeeper提供了丰富的Java和C语言接口,用于创建、删除、更新ZNode,查询ZNode状态,设置Watcher等操作。 - **ZAB协议**:Zookeeper Atomic Broadcast(ZAB)是Zookeeper实现一致性的重要协议,负责在...
Zookeeper界面访问工具,如ZooInspector,是为用户提供的一种图形化界面,用于更直观地查看和操作Zookeeper的数据节点和配置信息。下面将详细介绍Zookeeper的核心概念以及ZooInspector的使用方法。 一、Zookeeper...
ZooKeeper 提供了丰富的命令行工具 `zkCli.sh`(在Linux/Unix系统中)和 `zkCli.cmd`(在Windows系统中),用于交互式操作ZNode,例如创建、删除、查看节点等。 5. **应用场景** - **配置管理**:分布式应用的...
分布式锁是实现并发控制的关键,ZooKeeper提供了可重入的读写锁,确保并发操作的正确性。 此外,书中还会涉及ZooKeeper的安装、配置和监控,以及常见问题的排查和优化。对于开发者来说,理解ZooKeeper的API和最佳...