当前位置:K88软件开发文章中心大数据Zookeeper → 文章内容

Zookeeper API

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 10:08:51

nnectedSignal.await(); } else { System.out.println("Node does not exists"); } } catch(Exception e) { System.out.println(e.getMessage()); } }}一旦编译和执行应用程序,你将获得以下输出My first zookeeper app应用程序将等待ZooKeeper集合的进一步通知。使用ZooKeeper CLI zkCli.sh 更改指定znode的数据。cd /path/to/zookeeperbin/zkCli.sh>>> set /MyFirstZnode Hello现在,应用程序将打印以下输出并退出。HellosetData方法ZooKeeper类提供 setData 方法来修改指定znode中附加的数据。 setData 方法的签名如下:setData(String path, byte[] data, int version)path- Znode路径 data - 要存储在指定znode路径中的数据。version- znode的当前版本。每当数据更改时,ZooKeeper会更新znode的版本号。现在让我们创建一个新的Java应用程序来了解ZooKeeper API的 setData 功能。创建文件 ZKSetData.java 。在main方法中,使用 ZooKeeperConnection 对象创建一个ZooKeeper对象 zk 。然后,使用指定的路径,新数据和节点版本调用 zk 对象的 setData 方法。以下是修改附加在指定znode中的数据的完整程序代码。编码:ZKSetData.javaimport org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.KeeperState;import java.io.IOException;public class ZKSetData { private static ZooKeeper zk; private static ZooKeeperConnection conn; // Method to update the data in a znode. Similar to getData but without watcher. public static void update(String path, byte[] data) throws KeeperException,InterruptedException { zk.setData(path, data, zk.exists(path,true).getVersion()); } public static void main(String[] args) throws InterruptedException,KeeperException { String path= "/MyFirstZnode"; byte[] data = "Success".getBytes(); //Assign data which is to be updated. try { conn = new ZooKeeperConnection(); zk = conn.connect("localhost"); update(path, data); // Update znode data to the specified path } catch(Exception e) { System.out.println(e.getMessage()); } }}编译并执行应用程序后,指定的znode的数据将被改变,并且可以使用ZooKeeper CLI zkCli.sh 进行检查。cd /path/to/zookeeperbin/zkCli.sh>>> get /MyFirstZnodegetChildren方法ZooKeeper类提供 getChildren 方法来获取特定znode的所有子节点。 getChildren 方法的签名如下: getChildren(String path, Watcher watcher)path - Znode路径。 watcher - 监视器类型的回调函数。当指定的znode被删除或znode下的子节点被创建/删除时,ZooKeeper集合将进行通知。这是一次性通知。编码:ZKGetChildren.javaimport java.io.IOException;import java.util.*;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.data.Stat;public class ZKGetChildren { private static ZooKeeper zk; private static ZooKeeperConnection conn; // Method to check existence of znode and its status, if znode is available. public static Stat znode_exists(String path) throws KeeperException,InterruptedException { return zk.exists(path,true); } public static void main(String[] args) throws InterruptedException,KeeperException { String path = "/MyFirstZnode"; // Assign path to the znode try { conn = new ZooKeeperConnection(); zk = conn.connect("localhost"); Stat stat = znode_exists(path); // Stat checks the path if(stat!= null) { //“getChildren" method- get all the children of znode.It has two args, path and watch List <String> children = zk.getChildren(path, false); for(int i = 0; i < children.size(); i++) System.out.println(children.get(i)); //Print children's } else { System.out.println("Node does not exists"); } } catch(Exception e) { System.out.println(e.getMessage()); } }}在运行程序之前,让我们使用ZooKeeper CLI zkCli.sh 为 /MyFirstZnode 创建两个子节点。cd /path/to/zookeeperbin/zkCli.sh>>> create /MyFirstZnode/myfirstsubnode Hi>>> create /MyFirstZnode/mysecondsubmode Hi现在,编译和运行程序将输出上面创建的znode。myfirstsubnodemysecondsubnode删除ZnodeZooKeeper类提供了 delete 方法来删除指定的znode。 delete 方法的签名如下:delete(String path, int version)path - Znode路径。version - znode的当前版本。让我们创建一个新的Java应用程序来了解ZooKeeper API的 delete 功能。创建文件 ZKDelete.java 。在main方法中,使用 ZooKeeperConnection 对象创建一个ZooKeeper对象 zk 。然后,使用指定的路径和版本号调用 zk 对象的 delete 方法。删除znode的完整程序代码如下:编码:ZKDelete.javaimport org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.KeeperException;public class ZKDelete { private static ZooKeeper zk; private static ZooKeeperConnection conn; // Method to check existence of znode and its status, if znode is available. public static void delete(String path) throws KeeperException,InterruptedException { zk.delete(path,zk.exists(path,true).getVersion()); } p

上一页  [1] [2] [3] [4]  下一页


Zookeeper API