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的更多相关文章

  1. Java代码操作zookeeper

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. Java curator操作zookeeper获取kafka

    Java curator操作zookeeper获取kafka Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更 ...

  3. Hadoop_简单操作ZooKeeper

    一.概念 1. 一个开源的.分布式的,为分布式应用提供协调服务的Apache项目 2. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务 3. 设计非常易于编程,它使用的是类 ...

  4. 使用curator框架简单操作zookeeper 学习笔记

    Curator 操作是zookeeper的优秀api(相对于原生api),满足大部分需求.而且是Fluent流式api风格. 参考文献:https://www.jianshu.com/p/70151f ...

  5. Java API操作ZooKeeper

    创建会话 package org.zln.zk; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watch ...

  6. 六、Java API操作zookeeper节点

    目录 前文 pom.xml文件增加依赖 新建java文件:ZookeeperTest GitHub文件下载 前文 一.CentOS7 hadoop3.3.1安装(单机分布式.伪分布式.分布式 二.JA ...

  7. Java 简单操作hdfs API

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6632047118376780295/ 启动Hadoop出现问题:datanode的clusterID 和 name ...

  8. Java简单操作dubbo(一)

    dubbo-service公共Service package com.itman.service; public interface UserService { // 提供服务 使用userId查找用 ...

  9. java 简单操作HDFS

    创建java 项目 package com.yw.hadoop273; import org.apache.hadoop.conf.Configuration; import org.apache.h ...

随机推荐

  1. C#读写Excel实践笔记

    使用第三类包:NPOI 介绍 Github地址:https://github.com/tonyqus/npoi,Java POI项目的.NET版. 通过它可以在没有安装Office软件的情况下,快速的 ...

  2. DB2锁与隔离级别

    数据库管理器支持三种一般类别的锁定: 共享(S) 挂起 S 锁定之后,并发应用程序进程只能对数据执行只读操作. 更新(U) 挂起 U 锁定之后,如果并发应用程序进程未声明它们要更新行,那么它们只能对数 ...

  3. python作业(二)实现注册功能和登陆功能

    #1.实现注册功能 输入:username.passowrd,cpassowrd #最多可以输错3次 #3个都不能为空 #用户名长度最少6位, 最长20位,用户名不能重复 #密码长度最少8位,最长15 ...

  4. Google SketchUp Cookbook: (Chapter 2) Following Paths with Follow Me

    软件环境 SketchUp Pro 2018 参考书籍 Google SketchUp Cookbook Follow Me工具 Follow Me工具,将2D图形沿着一条路径挤出生成3D物体. 使用 ...

  5. EXT 获取gird各值

    var cellclick = function (item, td, cellIndex, record, tr, rowIndex, e) { //[ListenerArgument(0, &qu ...

  6. Pathon学习笔记1

    1.解释型语言和编译型语言 编译型:需要一个翻译的程序——编译器(Compiler)对源代码进行转化,变成可执行代码,称为编译(Compile).大的复杂的程序还需要链接程序(Linker)来链接各个 ...

  7. .net core2 单元测试

    1.下载   https://marketplace.visualstudio.com/items?itemName=RandomEngy.UnitTestBoilerplateGenerator 2 ...

  8. jvisualvm远程连接

    1. 今天用jvisualvm远程连接linux上的jdk,jxm方式没有连接成功,后来发现是tomcat安装目录bin下的catalina.sh文件下的JAVA_OPTS中内容格式不对,要有空格,修 ...

  9. Linq to SQL -- 入门篇

    一.什么是Linq Linq是语言集成查询(Language Integrated Query)的简称,是visual Studio 2008和.NET Framework 3.5版本中一项突破性的创 ...

  10. vs2017安装和使用教程(详细)

    借鉴:https://blog.csdn.net/qq_36556893/article/details/79430133#一.官网下载