分布式服务管理zookeeper的java api
zookeeper是一个分布式服务管理工具,本身具备高可用性,很多知名分布式系统入hadoop、Hbase等都采用zk管理。
常见的两个应用场景:1、服务的注册与发现 2、集群统一配置
下面看一下使用java 对zk进行交互的常用api
首先maven引入:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.3-beta</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.apache.zookeeper.CreateMode; /**
* @author panteng
* @description
* @date 17-5-24.
*/
public class Zk {
public static void main(String[] arges) {
String ZKServers = "10.38.164.80:2181,10.38.164.80:2182,10.38.164.80:2183";
/**
* 创建会话
* new SerializableSerializer() 创建序列化器接口,用来序列化和反序列化
*/
ZkClient zkClient = new ZkClient(ZKServers, 10000, 10000, new SerializableSerializer());
System.out.println("conneted ok!"); //订阅节点的子节点变化
zkClient.subscribeChildChanges("/javaApp", new ZKChildListener());
String appPath = zkClient.create("/javaApp/api", "javaApp", CreateMode.EPHEMERAL_SEQUENTIAL);
//输出创建节点的路径
System.out.println("created path:" + appPath);
//订阅数据的变化
zkClient.subscribeDataChanges(appPath, new ZkDataListener()); //读数据
String str = zkClient.readData(appPath);
System.out.println(str);
//写数据
zkClient.writeData(appPath, "newJavaApp");
System.out.println(zkClient.readData(appPath));
//判断节点是否存在
System.out.println(zkClient.exists("/javaApp/api0000000010")); try {
Thread.sleep(20000);
} catch (Exception e) { }
}
}
Zk.java
import org.I0Itec.zkclient.IZkDataListener; /**
* @author panteng
* @description
* @date 17-5-24.
*/
public class ZkDataListener implements IZkDataListener {
/**
* 节点数据发生变化时 触发此函数
*
* @param s 发生变化的节点路径
* @param o 节点变化后的数据
* @throws Exception
*/
@Override
public void handleDataChange(String s, Object o) throws Exception {
System.out.println("Change = " + s + " obj=" + o);
} @Override
public void handleDataDeleted(String s) throws Exception {
System.out.println("Delete = " + s);
}
}
ZkDataListener
import org.I0Itec.zkclient.IZkDataListener; /**
* @author panteng
* @description
* @date 17-5-24.
*/
public class ZkDataListener implements IZkDataListener {
/**
* 节点数据发生变化时 触发此函数
*
* @param s 发生变化的节点路径
* @param o 节点变化后的数据
* @throws Exception
*/
@Override
public void handleDataChange(String s, Object o) throws Exception {
System.out.println("Change = " + s + " obj=" + o);
} @Override
public void handleDataDeleted(String s) throws Exception {
System.out.println("Delete = " + s);
}
}
ZkDataListener
遍历所有节点
public static void getAllNodes(ZkClient zkClient, String currentPath) {
        try {
            List<String> stringList = zkClient.getChildren(currentPath);
            for (String str : stringList) {
                if ("/".equals(currentPath)) {
                    str = currentPath + str;
                } else {
                    str = currentPath + "/" + str;
                }
                System.out.println(str);
                getAllNodes(zkClient, str);
            }
        } catch (Exception e) {
            if (e.getMessage().indexOf("KeeperErrorCode = NoNode for") > -1) {
                return;
            }
        }
    }
分布式服务管理zookeeper的java api的更多相关文章
- 分布式服务框架 Zookeeper — 管理分布式环境中的数据
		
本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解. ...
 - 分布式服务框架 Zookeeper(转)
		
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题 ...
 - 大数据 --> 分布式服务框架Zookeeper
		
分布式服务框架 Zookeeper Zookeeper系列 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
 - Linux -- 基于zookeeper的java api(二)
		
Linux -- 基于zookeeper的java api(二) 写一个关于基于集群的zookeeper的自定义实现HA 基于客户端和监控器:使用监控的方法查看每个注册过的节点的状态来做出操作. Wa ...
 - zookeeper的java api操作
		
zookeeper的java api操作 创建会话: Zookeeper(String connectString,int sessionTimeout,Watcher watcher) Zookee ...
 - Linux -- 基于zookeeper的java api(一)
		
Linux -- 基于zookeeper的java api 首先启动你所有的 zkService.sh 查看状态:检查是否启动正确 [root@hu-hadoop2 ~]# zkServer.sh s ...
 - 【分布式】Zookeeper使用--Java API
		
一.前言 上一篇博客我们通过命令行来操作Zookeper的客户端和服务端并进行相应的操作,这篇主要介绍如何通过API(JAVA)来操作Zookeeper. 二.开发环境配置 首先打开Zookeeper ...
 - 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
		
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...
 - 分布式服务框架 Zookeeper -- 管理分布式环境中的数据(转载)
		
本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Had ...
 
随机推荐
- JSON Extractor/jp@gc - JSON Path Extractor 举例2
			
测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 { "status_code":200, "message&qu ...
 - 2、ACE-实用生活口语-介绍 Introductions
			
(1) (2) (3)认识你很荣幸,如何称呼您呢?It's a pleasure to meet you.I'm glad to meet you.May I have your name?How s ...
 - EasyNVR智能云终端硬件使用场景分析:如何实现软硬一体的视频上云整体解决方案
			
背景分析 在于众多的客户交流中,经常会被客户问到,"EasyNVR到底是软件还是硬件?"."EasyNVR能否出一个硬件的版本,摆脱自建服务器的压力?".&qu ...
 - Dictionary——通过value找Key
			
Dictionary<string, string> dic = GetRoleDescriptions(); string key = dic.FirstOrDefault(x => ...
 - C#设计模式-单实例
			
单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点. 1.经典的模式 namespace singleClass { class ...
 - Windows下批处理文件(.bat)的使用
			
cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多.cmd文件只 ...
 - iOS 多线程之 GCD 的基本使用
			
什么是GCD 全称Grand Central Dispatch 中暑调度器 纯C语言 提供了很多强大的函数 GCD 的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU ...
 - 解决Mysql报错缺少libaio.so.1
			
解决Mysql报错缺少libaio.so.1 报错如上图,需要安装libaio.so.1 64位系统安装: wget http://mirror.centos.org/centos/6/os/x86_ ...
 - comboBox绑定字典Dictionary 获取value中的值
			
第一种 最简洁的方法 Dictionary<string, string> list = new Dictionary<string, string> { {"thi ...
 - zabbix-2.4.8-1添加MySQL主从状态监控
			
1.安装zabbix-agentyum -y install zabbix-2.4.8-1.el6.x86_64.rpm zabbix-agent-2.4.8-1.el6.x86_64.rpm 安装以 ...