使用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 List
getChildren(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");		List
children = null; children = zookeeper.getChildren("/"); System.out.println(children); zookeeper.closeConnection(); }}

 

上一篇:zookeeper 原生API总结
下一篇:pom文件确定依赖的groupid和artifactId

发表评论

最新留言

不错!
[***.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
NVIDIA 的云游戏服务 GeForce NOW 无耻地忽略了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
在 Ubuntu 17.10 上安装 AWFFull Web 服务器日志分析应用程序 | Linux 中国 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
如何在 Ubuntu 16.04 强制 APT 包管理器使用 IPv4 | Linux 中国 2019-03-03
使用 top 命令了解 Fedora 的内存使用情况 | Linux 中国 2019-03-03
怎样解决 “sub process usr bin dpkg returned an error code 1” 错误 2019-03-03