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. tp框架增删改

    选择一张表: 首先要创建模型: 1 $n = M("account"); 数据库添加数据: 1.使用数组: 1 2 3 1.使用数组 $arr = array("uid& ...

  2. nginx1.14.0版本高可用——keepalived双机热备

    nginx不支持主从,所以我们需要使用keepalive支持高可用. keepalived重要知识点 在局域网内,每个主机上各安装一个keepalived,注意关闭防火墙firewalld,然后设定一 ...

  3. windows2012 IIS部署GeoTrust证书踩过的坑。 视频测试可用 IIS 证书导入

    证书导入方式 https://wenku.baidu.com/view/3504f29a55270722192ef78a.html https://www.cnblogs.com/jackrebel/ ...

  4. 再说项目 Dec 27th 2018

    其实对于任何项目来说,最难不是开发或者系统等技术的问题,反而是需求的问题,需求一直变,一直定不下来,导致流程变来变去,系统方案层面也确定不下来.而需求的问题,归根结底还是人的问题.项目的关键用户对现有 ...

  5. windows短路径转换成长路径

    参考: https://blog.csdn.net/wxqian25/article/details/43951281 https://docs.microsoft.com/en-us/windows ...

  6. [Notepad++]Notepad++怎么实现双视图/双窗口?

    作为windows下非常优秀的开源代码编辑器,Notepad++是工程师必备代码编辑器.相比较之下,老一辈文本编辑器如ultraedit,editplus,就显得繁琐.冗余.疲惫.我使用过Notepa ...

  7. jenkins部署web项目(不包含前后端分离)

    本次部署的是非常非常传统的web项目, jsp页面那种, 一 首先给tomact设置管理员用户和管理员密码,这类的教程网上有很多,在<tomcat-users><tomcat-use ...

  8. Linux系统中lvm简介

    LVM逻辑卷管理器 实战场景:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办? 答:只能换一个更大的磁盘.如果用了一段时间后,空间又不够了,怎么办?再加一块更大的?换磁盘的过程中, ...

  9. 影响solr性能的一些因素(附使用经验)

    Solr本身的性能不错,但是在使用过程中,还是会遇到一些使用错误,或是没考虑到的地方:在出现瓶颈时,可以首先考虑哪些点呢?下面就来看一下Solr官方的总结,个人觉得总结的很好.SOLR+LUCENE的 ...

  10. ubuntu环境部署项目

    安装python3.6 第一步:sudo add-apt-repository ppa:jonathonf/python-3.6 如果报错为:sudo: add-apt-repository: com ...