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 ...
随机推荐
- BT.656
转自http://www.cnblogs.com/s_agapo/archive/2012/04/08/2437775.html 凡是做模拟信号采集的,很少不涉及BT.656标准的,因为常见的模拟视频 ...
- Asynchronous programming in javascript
Javascript是单线程的,因此异步编程对其尤为重要. ES 6以前: * 回调函数* 事件监听(事件发布/订阅)* Promise对象 ES 6: * Generator函数(协程corouti ...
- 2018.7.3 lnmp一键安装包无人值守版本 php7.2 + nginx1.14.0 + mariadb5.5 + centos7.1(1503) 环境搭建 + Thinkphp5.1.7 配置
给自己练习用的,整个过程追求一个简单粗暴,没有配置虚拟主机,现在记录一下过程. 1. 进入到lnmp解压缩后的文件夹conf/rewrite,把thinkphp.conf复制一份到/usr/local ...
- VMware 安装 CentOS7
需要注意几点: 1.分区 分区前先规划好 swap #交换分区,一般设置为内存的2倍 / #剩余所有空间 备注:生产服务器建议单独再划分一个/data分区存放数据 点左下角的“+”号 挂载点:swap ...
- RMAN-06900 RMAN-06901 ORA-19921
转自http://blog.itpub.net/12778571/viewspace-700360/ 1.连接到rman中$ rman target/Recovery Manager: Release ...
- 通过google cloud API 使用 WaveNet
Cloud Text-to-Speech 中使用了WaveNet,用于TTS,页面上有Demo.目前是BETA版 使用方法 注册及认证参考:Quickstart: Text-to-Speech 安装g ...
- Python数据类型的内置函数之list(列表)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) list(列表)的操作 - (append)在列表最后追加指 ...
- RNN探索(2)之手写数字识别
这篇博文不介绍基础的RNN理论知识,只是初步探索如何使用Tensorflow,之后会用笔推导RNN的公式和理论,现在时间紧迫所以先使用为主~~ import numpy as np import te ...
- leetcode每日刷题计划-简单篇day11
Num 121 买卖股票的最佳时期 Best Time to Buy and Sell Stock class Solution { public: int maxProfit(vector<i ...
- 01 HTML快速入门
HTML CSS JS (网络三剑客) 上网就是下载网页 浏览器 就是一个解释器 CS模式--------client serverbs模式--------browser server HTML是什么 ...