
使用zookeeper API实现zookeeper的基本操作
发布日期:2021-05-04 20:50:58
浏览次数:12
分类:技术文章
本文共 3624 字,大约阅读时间需要 12 分钟。
参考了网上的一个例子,现在程序可以跑了,但是由于时间原因,明天再做深入研究。
这里先记下参考的例子及其代码()
package zookeeper;import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;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.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;public class MyZookeeper implements Watcher { private ZooKeeper zookeeper; /** * 超时时间 */ private static final int SESSION_TIME_OUT = 2000; private CountDownLatch countDownLatch = new CountDownLatch(1); @Override public void process(WatchedEvent event) { if (event.getState() == KeeperState.SyncConnected) { System.out.println("Watch received event"); countDownLatch.countDown(); } } /** * 连接zookeeper * * @param host * @throws Exception */ public void connectZookeeper(String host) throws Exception { zookeeper = new ZooKeeper(host, SESSION_TIME_OUT, this); countDownLatch.await(); System.out.println("zookeeper connection success"); } /** * 创建节点 * * @param path * @param data * @throws Exception */ public String createNode(String path, String data) throws Exception { return this.zookeeper.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } /** * 获取路径下所有子节点 * * @param path * @return * @throws KeeperException * @throws InterruptedException */ public ListgetChildren(String path) throws KeeperException, InterruptedException { List children = zookeeper.getChildren(path, false); return children; } /** * 获取节点上面的数据 * * @param path * 路径 * @return * @throws KeeperException * @throws InterruptedException */ public String getData(String path) throws KeeperException, InterruptedException { byte[] data = zookeeper.getData(path, false, null); if (data == null) { return ""; } return new String(data); } /** * 设置节点信息 * * @param path * 路径 * @param data * 数据 * @return * @throws KeeperException * @throws InterruptedException */ public Stat setData(String path, String data) throws KeeperException, InterruptedException { Stat stat = zookeeper.setData(path, data.getBytes(), -1); return stat; } /** * 删除节点 * * @param path * @throws InterruptedException * @throws KeeperException */ public void deleteNode(String path) throws InterruptedException, KeeperException { zookeeper.delete(path, -1); } /** * 获取创建时间 * * @param path * @return * @throws KeeperException * @throws InterruptedException */ public String getCTime(String path) throws KeeperException, InterruptedException { Stat stat = zookeeper.exists(path, false); return String.valueOf(stat.getCtime()); } /** * 获取某个路径下孩子的数量 * * @param path * @return * @throws KeeperException * @throws InterruptedException */ public Integer getChildrenNum(String path) throws KeeperException, InterruptedException { int childenNum = zookeeper.getChildren(path, false).size(); return childenNum; } /** * 关闭连接 * * @throws InterruptedException */ public void closeConnection() throws InterruptedException { if (zookeeper != null) { zookeeper.close(); } }}
package zookeeper;import java.util.List;/** * Hello world! * */public class App { public static void main(String[] args) throws Exception { MyZookeeper zookeeper = new MyZookeeper(); zookeeper.connectZookeeper("127.0.0.1:2181"); Listchildren = null; children = zookeeper.getChildren("/"); System.out.println(children); zookeeper.closeConnection(); }}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月25日 09时25分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Richard Stallman 被迫辞去 FSF 主席的职务 | Linux 中国
2019-03-03
Firefox 69 已可在 Fedora 中获取 | Linux 中国
2019-03-03
Linux 中国徽标征集活动结果 | Linux 中国
2019-03-03
黑吃黑——黑客组织通过黑客工具攻击其他黑客 | 每日安全资讯
2019-03-03
在 Python 调试过程中设置不中断的断点 | Linux 中国
2019-03-03
AI 系统向自动化编码迈进 | Linux 中国
2019-03-03
使用 Jupyter Notebooks 构建一个远程管理控制台 | Linux 中国
2019-03-03
使用开源可视化工具来理解你的 Python 代码 | Linux 中国
2019-03-03
【2021 ECUG Con】聚势而来,与你相约花开时
2019-03-03
硬核观察 | 有人在比特币骗局中损失了 10 个比特币
2019-03-03
FreeDOS 的简单介绍 | Linux 中国
2019-03-03
查看一个归档或压缩文件的内容而无需解压它 | Linux 中国
2019-03-03
极致技术探索:显卡工作原理 | Linux 中国
2019-03-03
如何在 Ubuntu 系统中添加一个辅助 IP 地址 | Linux 中国
2019-03-03
LCTT 2018:五周年纪念日 | Linux 中国
2019-03-03
使用 top 命令了解 Fedora 的内存使用情况 | Linux 中国
2019-03-03