Zookeeper的Shell 客户端操作和zookeeper java api 代码

it2023-07-04  64

Zookeeper的Shell 客户端操作和zookeeper java api 代码

Zookeeper的Shell 客户端操作ZooKeeper Java APIzookeeper选举机制

Zookeeper的Shell 客户端操作

运行 zkCli.sh –server ip:2181

命令 说明 参数

create [-s] [-e] path data acl 创建Znode -s 指定是顺序节 点 -e 指定是临时节 点 ls path [watch] 列出Path下所有子Znode get path [watch] 获取Path对应的Znode的数据和属性 ls2 path [watch] 查看Path下所有子Znode以及子

Znode的属性

set path data [version]

更新节点 version 数据版本

delete path [version]

删除节点, 如果要删除的节点有子 Znode则无法删除 version 数据版本

rmr path

删除节点, 如果有子Znode则递归删 除

setquota -n|-b val path

修改Znode配额

-n 设置子节点最 大个数 -b 设置节点数据 最大长度 history 列出历史记录

1:创建普通节点

create /app1 hello

2: 创建顺序节点

create -s /app3 world

3:创建临时节点

create -e /tempnode world

4:创建顺序的临时节点

create -s -e /tempnode2 aaa

5:获取节点数据

get /app1

6:修改节点数据

set /app1 xxx

7:删除节点

delete /app1 删除的节点不能有子节点 rmr /app1 递归删除

ZooKeeper Java API

org.apache.zookeeper.Zookeeper Zookeeper 是在Java中客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。 org.apache.zookeeper.Watcher Watcher接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。 process方法是Watcher接口中的一个回调方法,当ZooKeeper向客户端发送一个Watcher事件通知时,客户端就会对相应的process方法进行回调,从而实现对事件的处理。 基本使用 建立java maven项目,引入maven pom坐标。

<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> public static void main(String[] args) throws Exception { // 初始化 ZooKeeper实例(zk地址、会话超时时间,与系统默认一致、watcher) ZooKeeper zk = new ZooKeeper("node-1:2181,node-2:2181", 30000, new Watcher() { @Override public void process(WatchedEvent event) { System.out.println("事件类型为:" + event.getType()); System.out.println("事件发生的路径:" + event.getPath()); System.out.println("通知状态为:" +event.getState()); } }); zk.create("/myGirls", "性感的".getBytes("UTF-8"), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); zk.close(); 更多操作示例 public static void main(String[] args) throws Exception { // 初始化 ZooKeeper实例(zk地址、会话超时时间,与系统默认一致、watcher) ZooKeeper zk = new ZooKeeper("node-21:2181,node-22:2181", 30000, new Watcher() { @Override public void process(WatchedEvent event) { System.out.println("事件类型为:" + event.getType()); System.out.println("事件发生的路径:" + event.getPath()); System.out.println("通知状态为:" +event.getState()); } }); // 创建一个目录节点 zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); // 创建一个子目录节点 zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); System.out.println(new String(zk.getData("/testRootPath",false,null))); // 取出子目录节点列表 System.out.println(zk.getChildren("/testRootPath",true)); // 修改子目录节点数据 zk.setData("/testRootPath/testChildPathOne","modifyChildDataOne".getBytes(),-1); System.out.println("目录节点状态:["+zk.exists("/testRootPath",true)+"]"); // 创建另外一个子目录节点 zk.create("/testRootPath/testChildPathTwo", "testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); System.out.println(new String(zk.getData("/testRootPath/testChildPathTwo",true,null))); // 删除子目录节点 zk.delete("/testRootPath/testChildPathTwo",-1); zk.delete("/testRootPath/testChildPathOne",-1); // 删除父目录节点 zk.delete("/testRootPath",-1); zk.close(); }

zookeeper选举机制

最新回复(0)