Java简单操作Zookeeper
Zookeeper客户端链接
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
package com.itman; import java.io.IOException;
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.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper; public class ZookeeperHelloworld { /**
* 集群地址
*/
private static final String CONNECT_ADDRES = "169.254.197.135:2181";
/**
* 超时时间
*/
private static final int SESSIONTIME = 2000;
private static final CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
ZooKeeper zk = new ZooKeeper(CONNECT_ADDRES, SESSIONTIME, new Watcher() { public void process(WatchedEvent event) {
// 获取时间的状态
KeeperState keeperState = event.getState();
EventType tventType = event.getType();
// 如果是建立连接
if (KeeperState.SyncConnected == keeperState) {
if (EventType.None == tventType) {
// 如果建立连接成功,则发送信号量,让后阻塞程序向下执行
countDownLatch.countDown();
System.out.println("zk 建立连接");
}
}
} });
// 进行阻塞
countDownLatch.await();
// 创建父节点
// String result = zk.create("/testRott", "12245465".getBytes(),
// Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// System.out.println("result:" + result);
// 创建子节点
String result = zk.create("/testRott/children", "children 12245465".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
System.out.println("result:" + result);
zk.close();
} }
Watcher
package com.itman; 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.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper; public class ZkWatcher implements Watcher { /**
* 集群地址
*/
private static final String CONNECT_ADDRES = "169.254.197.135:2181";
private static ZooKeeper zooKeeper;
/**
* 超时时间
*/
private static final int SESSIONTIME = 2000; public ZkWatcher() {
createConnection(CONNECT_ADDRES, SESSIONTIME);
} // zk节点、发生变更、删除、修改 、 新增 事件通知
public void process(WatchedEvent event) {
KeeperState keeperState = event.getState();
// 事件类型
EventType eventType = event.getType();
// 节点名称
String path = event.getPath();
System.out.println(
"#####process()####调用####keeperState:" + keeperState + ",eventType:" + eventType + ",path:" + path);
if (KeeperState.SyncConnected == keeperState) {
// 连接类型
if (EventType.None == eventType) {
// 建立zk连接
System.out.println("建立zk连接成功!");
}
// 创建类型
if (EventType.NodeCreated == eventType) {
System.out.println("####事件通知,当前创建一个新的节点####路径:" + path);
}
// 修改类型
if (EventType.NodeDataChanged == eventType) {
System.out.println("####事件通知,当前创建一个修改节点####路径:" + path);
}
// 删除类型
if (EventType.NodeDeleted == eventType) {
System.out.println("####事件通知,当前创建一个删除节点####路径:" + path);
}
}
System.out.println("####################################################");
System.out.println();
} // 创建zk连接
private void createConnection(String connectAddres, int sessiontime) {
try {
zooKeeper = new ZooKeeper(connectAddres, sessiontime, this);
} catch (Exception e) {
// TODO: handle exception
}
} // 创建节点
public void createNode(String path, String data) {
try {
String result = zooKeeper.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("创建节点成功....result:" + result); } catch (Exception e) {
e.printStackTrace();
}
} // 修改节点
public void updateNode(String path, String data) {
try {
zooKeeper.setData(path, data.getBytes(), -1);
} catch (Exception e) {
// TODO: handle exception
}
} // 删除节点
public void deleNode(String path) {
try {
zooKeeper.delete(path, -1);
} catch (Exception e) {
// TODO: handle exception
}
} public void close() {
try {
if (zooKeeper != null)
zooKeeper.close();
} catch (Exception e) {
// TODO: handle exception
}
} public static void main(String[] args) throws KeeperException, InterruptedException {
ZkWatcher zkWatcher = new ZkWatcher();
// zkWatcher.createNode("/parent1", "6452852");
String path = "/parent1";
zooKeeper.exists(path, true);
// zkWatcher.updateNode(path, "88888");
zkWatcher.deleNode(path);
zkWatcher.close();
}
}
Java简单操作Zookeeper的更多相关文章
- Java代码操作zookeeper
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Java curator操作zookeeper获取kafka
Java curator操作zookeeper获取kafka Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更 ...
- Hadoop_简单操作ZooKeeper
一.概念 1. 一个开源的.分布式的,为分布式应用提供协调服务的Apache项目 2. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务 3. 设计非常易于编程,它使用的是类 ...
- 使用curator框架简单操作zookeeper 学习笔记
Curator 操作是zookeeper的优秀api(相对于原生api),满足大部分需求.而且是Fluent流式api风格. 参考文献:https://www.jianshu.com/p/70151f ...
- Java API操作ZooKeeper
创建会话 package org.zln.zk; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watch ...
- 六、Java API操作zookeeper节点
目录 前文 pom.xml文件增加依赖 新建java文件:ZookeeperTest GitHub文件下载 前文 一.CentOS7 hadoop3.3.1安装(单机分布式.伪分布式.分布式 二.JA ...
- Java 简单操作hdfs API
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6632047118376780295/ 启动Hadoop出现问题:datanode的clusterID 和 name ...
- Java简单操作dubbo(一)
dubbo-service公共Service package com.itman.service; public interface UserService { // 提供服务 使用userId查找用 ...
- java 简单操作HDFS
创建java 项目 package com.yw.hadoop273; import org.apache.hadoop.conf.Configuration; import org.apache.h ...
随机推荐
- git 常用命令思维导图
- 用crontab部署定时任务
1.(centos)安装crontab服务 yum install crontabs 2.启动.停止.重启.重载服务 /sbin/service crond start /sbin/service c ...
- mybatis的逆向工程和中文注解
由于MyBatis Generator自带了生成注释的功能,但是,是英文的而且生成的根本无法理解,所以可以通过,修改他的源码来实现生成中文的注释,具体方式有以下几种: 1) 自定义CommentGen ...
- php_screw安装,使用
安装步骤:1. 下载源码:wget http://nchc.dl.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.g ...
- 使用VISIO远程服务器上的ORACLE数据库,反向生成数据库实体关系图
反向即根据已有的数据库,生成ER图,很多工具都可以实现这一过程,如visio,powerdesigner等,下面文章记录一下我使用VISIO生成远程服务器上的一个数据库ER图过程,供以后自己参考. 1 ...
- NPOI 导出Excel部分
) { MessageBox.Show("没有找到相关的数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.I ...
- vs2017使用问题
最近安装了新版本的Visual studio 2017,但是在使用的过程中遇到了这样一个问题.刚启动电脑后,打开vs2017是可以打开的,但是当关掉之后再打开就打不开了,但是任务管理器看可以看到有一 ...
- k2datas 基础编程题,判断字符串是否有重复串
package String; public class DuplicateString { public static boolean isDup(String s) throws Exceptio ...
- C#对屏幕分辨率的操作
winform应用程序 1.新建Resolution.cs类 using System; using System.ComponentModel; using System.Windows.Forms ...
- Java异常处理——受控(checked)的异常(throws语句)
受控与不受控的异常 1.throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类. 2.RuntimeException(其基类为Exception) 和Err ...