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 ...
随机推荐
- lnmp环境 swoole聊天室
pecl install swoole 安装php扩展swooleservice php-fpm restart 重启php服务whereis php.ini 查看php.ini的位置 查看文件是否配 ...
- StringRedisTemplate常用操作
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向r ...
- 安装git-review
参考 https://blog.csdn.net/qq18340811755/article/details/80965188 当yum install git-review安装失效,没有安装包时,只 ...
- GitLab配置后收取不到邮件问题
一.root权限下,修改gitlab的配置文件:/etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_ ...
- spring ref history Design philosophy
一.前言 Spring 框架可以说是 Java 开发人员使用的最流行的应用程序开发框架之一.它目前由大量提供一系列服务的模块组成.包括模块容器,为构建横切关注点提供支持的面向切面编程(AOP),安全框 ...
- C#后台接java接口传输字节数组(byte[])
事情是这样的C#t代码之前接的WCF接口,后来那边统一改为java的接口,我是用的HttpClient从后台发请求调用的java接口,其他接口都很顺利,是的....知道遇到一个需要传byte[]类型数 ...
- ibatis.net 循环
if (oReqV[0]["tag"] != null && !string.IsNullOrEmpty(oReqV[0]["tag"].ToS ...
- .net core2.2
GetCurrentDirectory returns the worker directory of the process started by IIS rather than the app's ...
- 起源-C的故事
———C语言的起源故事(简史)——— C语言在70年代问世的,1978年由美国电话公司(AT&T)贝尔实验室正式发表.B.W.Kernighan和D.M.Ritchit合著了著名的" ...
- C#,ASP.NET简单的MD5加密,解密
简单的MD5加密 首先要有一个加解密的规则 就是key 代码如下 // 创建Key public string GenerateKey() { DESCryptoServiceProvider de ...