博客
关于我
使用zookeeper API实现zookeeper的基本操作
阅读量:281 次
发布时间:2019-03-01

本文共 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(); }}

 

转载地址:http://ydgo.baihongyu.com/

你可能感兴趣的文章
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>