zookeeper学习-2(如何使用zookeeper进行配置管理-java版本)
来源:互联网 发布:linux 如何安装xampp 编辑:程序博客网 时间:2024/06/08 04:51
首先需要安装zookeeper
点击查看如何安装
zookeeper 提供了 c ,java 两种语言的客户端。这里讲解java语言。
1:将jar包 zookeeper-3.5.1-alpha.jar(跟着安装包一起下载下来)放入你的classpath下。
2:编写代码
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.List;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;public class ZookeeperClient { private static Stat stat = new Stat(); private static ZooKeeper zk; //监控 路径 private static String monitorPath = "/serverList"; public static void main(String[] args) { try { zk = new ZooKeeper("192.168.17.129:2181,192.168.17.129:2182,192.168.17.129:2183", 5000, new Watcher() { @Override public void process(WatchedEvent event) { //获取事件类型 EventType eventType = event.getType(); System.out.println("事件类型:" + eventType.toString()); if(eventType.equals( EventType.NodeDataChanged)) {//事件类型为,节点对应的数据 发生变化 monitor(zk); } if(eventType.equals( EventType.NodeChildrenChanged)) {//事件类型为,节点发生变化,比如 添加节点,删除节点。 monitor(zk); } } }); monitor(zk); //保证 main 线程 不会 死掉 Thread.sleep(Long.MAX_VALUE); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } /** * Zookeeper 监听 * @param zk */ public static void monitor(ZooKeeper zk) { try { //监控 /serverList 下面 是否 创建了新节点 或者删除了新节点 //也可以指定特定的 watcher 例如 zk.getChildren(String path, Watcher watcher); //注意:每次调用 Watcher 的 process 方法,如果想要对相应的 目录或者目录对应的数据进行监听,都需要重新注册,因为注册一次,只能调用一次 Watcher 的 process 方法 List<String> subList = zk.getChildren(monitorPath, true); for (int i=0,size=subList.size(); i<size; i++) { String subNode = subList.get(i); //监控 /serverList 下面的 节点 对应 的 数据 是否发生变化 //也可以指定特定的 watcher 例如 zk.getData(String path, Watcher watcher, Stat stat); byte[] data = zk.getData(monitorPath + "/" + subNode, true, stat); if(data != null && data.length > 0) { //输出 节点对应的数据 System.out.println("节点数据: " + monitorPath + "/" + subNode + "=" + new String(data, "utf-8")); } } } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }}
3:测试过程
运行代码前,创建 serverList目录
依次执行下面的命令
链接 zookeeper
/usr/local/zookeeper-3/bin/zkCli.sh -server localhost:2183
创建serverList目录
create /serverList
创建完serverList目录后,运行代码。
创建serverList的子目录
create /serverList/server1
给 /serverList/server1 目录赋值
set /serverList/server1 192.168.1.1
这时测试代码在控制台 会有内容输入。
/serverList/server1=192.168.1.1
到这里,如何使用zookeeper进行配置管理 就结束了。
0 0
- zookeeper学习-2(如何使用zookeeper进行配置管理-java版本)
- zookeeper学习-3(如何使用zookeeper进行集群管理-java版本)
- (未写完)Zookeeper学习(六):利用Zookeeper实现配置管理
- Zookeeper配置管理
- Zookeeper配置管理
- ZooKeeper 学习 (四) ZooKeeper Java客户端API使用
- ZooKeeper学习总结(2)——ZooKeeper开源Java客户端ZkClient使用
- 如何使用客户端对ZooKeeper进行操作。
- 使用zookeeper实现静态数据中心化配置管理
- Zookeeper学习(2)
- ZooKeeper场景实践:(2)集中式配置管理
- Zookeeper系列(三十)Zookeeper场景应用之配置管理中心
- zookeeper分布式配置管理
- zookeeper分布式配置管理
- Zookeeper统一配置管理
- ZooKeeper应用场景-配置管理
- Zookeeper应用--配置管理
- zookeeper统一配置管理
- ActionInvoker
- 如何在Java中对MongoDB按日期进行查询统计
- 〖原创〗使用Docker过程中注意事项之壹(文章末尾有彩蛋!)
- 【转】Android LockScreen admin API sample code
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- zookeeper学习-2(如何使用zookeeper进行配置管理-java版本)
- 安全测试之缓冲区溢出(BO)
- Linux下编译的那些事
- bzoj 2194快速傅立叶之二
- javascript实现键盘按下回车时触发
- quick-cocos2d-x教程13:实现帧动画
- druid配置详解
- Linux命令行学习之路(五)
- SQLite数据库创建、升级数据库、事务处理、添加、更新、删除、查询管理操作类完整代码