Zookeeper 系列(四)ZKClient API

环境准备:

<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>

一、ZKClient 基本用法

public class ZkClientBase {

    private static final String CONNECT_ADDR = "127.0.0.1:2181";
private static final int SEESION_OUTTIME = 5 * 1000; public static void main(String[] args) {
ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR), 10 * 1000); //1. create and delete
zkClient.createEphemeral("/temp");
zkClient.createPersistent("/super/c1", true);
zkClient.deleteRecursive("/super"); //2. 设置path和data,并且读取于节点和每个节点的内容
zkClient.createPersistent("/super", "1234");
zkClient.createPersistent("/super/c1", "c1");
zkClient.createPersistent("/super/c2", "c2"); List<String> list = zkClient.getChildren("/super");
for (String path : list) {
String rp = "/super/" + path;
System.out.println(rp + ":" + zkClient.readData(rp).toString());
} //3. 更新和判断节点是否存在
zkClient.writeData("/super/c1", "新内容");
System.out.println("/super/c1:" + zkClient.readData("/super/c1").toString());
System.out.println("/super/c1:" + zkClient.exists("/super/c1"));
} }

一、ZKClient Watcher

(一)节点变化

import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection; /**
* 监听节点变化
* @author: leigang
* @version: 2018-04-06
*/
public class zkClientWatcher2 { private static final String CONNECT_ADDR = "127.0.0.1:2181";
private static final int SEESION_OUTTIME = 5 * 1000; public static void main(String[] args) throws InterruptedException {
ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR), SEESION_OUTTIME);
zkClient.deleteRecursive("/super");
zkClient.createPersistent("/super"); // 对父节点添加子节点变化的事件
zkClient.subscribeDataChanges("/super", new IZkDataListener() {
@Override
public void handleDataChange(String dataPath, Object data) throws Exception {
System.out.println("变量的节点为:" + dataPath + ",变更的内容为:" + data);
} @Override
public void handleDataDeleted(String dataPath) throws Exception {
System.out.println("删除的节点为:" + dataPath);
}
}); zkClient.writeData("/super", "super");
Thread.sleep(1000);
} }

(一)子节点变化

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection; import java.util.List; /**
* 监听子节点变化
* @author: leigang
* @version: 2018-04-06
*/
public class zkClientWatcher { private static final String CONNECT_ADDR = "127.0.0.1:2181";
private static final int SEESION_OUTTIME = 5 * 1000; public static void main(String[] args) throws InterruptedException {
ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR), SEESION_OUTTIME);
zkClient.deleteRecursive("/super"); zkClient.subscribeChildChanges("/super", new IZkChildListener() {
@Override
public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
System.out.println("parentPath:" + parentPath);
System.out.println("currentChilds:" + currentChilds);
}
}); zkClient.createPersistent("/super");
Thread.sleep(1000); zkClient.createPersistent("/super/c1", "c1");
Thread.sleep(1000); zkClient.createPersistent("/super/c2", "c2");
Thread.sleep(1000); // 修改不会监听
zkClient.writeData("/super/c2", "c2新内容");
Thread.sleep(1000); zkClient.deleteRecursive("/super");
Thread.sleep(Integer.MAX_VALUE);
} }

Zookeeper 系列(四)ZKClient API的更多相关文章

  1. Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心

    一.Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性. 包括跨进程.跨机器.跨网络导致共享资源不一致的问题. 1. 分布式锁的实现思路 说明: 这种实现会有一个缺点,即当 ...

  2. Zookeeper系列2 原生API 以及核心特性watcher

    原生API 增删改查询 public class ZkBaseTest { static final String CONNECT_ADDR = "192.168.0.120"; ...

  3. go微服务系列(四) - http api中引入protobuf

    1. protobuf相关依赖安装 2. 改造之前的client 2.1 新建proto文件 2.2 运行protoc命令生成go文件 2.3 然后把原来的map修改成具体的类型就可以了 3. 处理j ...

  4. Natasha 4.0 探索之路系列(四) 模板 API

    Natasha 模板 Natasha 在编译单元的基础上进行了封装整理, 并提供了多种模板帮助开发者构建功能. 使用此篇的 API 前提是您对 C# 非常熟悉, 对系统的一些类型足够了解. 据此 Na ...

  5. Zookeeper 系列(三)Zookeeper API

    Zookeeper 系列(三)Zookeeper API 本节首先介绍 Zookeeper 的 Shell 命令,再对 Java 操作 Zookeeper 的三种方式进行讲解,本节先介绍 Zookee ...

  6. Zookeeper 系列(五)Curator API

    Zookeeper 系列(五)Curator API 一.Curator 使用 Curator 框架中使用链式编程风格,易读性更强,使用工程方法创建连接对象使用. (1) CuratorFramewo ...

  7. 面向服务的体系架构 SOA(三) --- Zookeeper API、zkClient API的使用

    zookeeper简单介绍及API使用 1.1 zookeeper简介 zookeeper是一个针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护.名字服务.分布式同步.组服务等.zookee ...

  8. 转:arcgis api for js入门开发系列四地图查询

    原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...

  9. curator框架的使用以及实现分布式锁等应用与zkclient操作zookeeper,简化复杂原生API

    打开zookeeper集群 先体会一下原生API有多麻烦(可略过): //地址 static final String ADDR = "192.168.171.128:2181,192.16 ...

随机推荐

  1. UVA-712-满二叉树

    一个策略树(S-tree)是一组变量Xn={x1,x2...xn}的表现形式,它代表一个布尔函数f:{0,1}n->{0,1},策略树每条路径从根结点开始由n+1个结点组成,策略树的每一个结点都 ...

  2. PHP图像 因其本身有错无法显示

    昨天终于将客户的一个网站迁移至虚拟主机上,满怀希望的敲入网址.唰的一声,网站很轻松的被打开了. 心里那个高兴啊~~~ 咦,怎么产品图片都没有显示出来.一块块都是空白.敲入img src对应的地址,看看 ...

  3. 机器学习入门-贝叶斯构造LDA主题模型,构造word2vec 1.gensim.corpora.Dictionary(构造映射字典) 2.dictionary.doc2vec(做映射) 3.gensim.model.ldamodel.LdaModel(构建主题模型)4lda.print_topics(打印主题).

    1.dictionary = gensim.corpora.Dictionary(clean_content)  对输入的列表做一个数字映射字典, 2. corpus = [dictionary,do ...

  4. Qt 的事件

    一个事件由一个特定的QEvent子类来表示,如QMouseEvent.QKeyEvent 处理一个事件的方法: 方法一:重新实现部件的paintEvent.mousePressEvent等事件处理函数 ...

  5. mongodb基础学习6-用户管理

    下面来说一下用户管理,前面对mongodb进行操作都无需用户名密码进行登陆,可以设置用户进行数据库的访问 添加用户:三个参数:用户名,密码,是否只读 开启权限验证 进行验证 修改密码 删除用户 用户角 ...

  6. Haskell语言学习笔记(24)MonadWriter, Writer, WriterT

    MonadWriter 类型类 class (Monoid w, Monad m) => MonadWriter w m | m -> w where writer :: (a,w) -& ...

  7. TortoiseGit 使用 HTTP 方式每次 PUSH 无需输入密码的方法

    由于 BitBucket 被墙,导致使用时只能用HTTPS代理的方式,但TortoiseGit貌似没有记忆密码的功能,以至于每次push时都要求输入密码,很是麻烦!在网上搜到的保存密码的方式也有点笨. ...

  8. 组队打代码 !!! ——Alpha项目冲刺

    Alpha阶段 - 博客链接合集 队伍名称: 代码那些事儿 学号 姓名 211606320 刘佳 211606313 李佳 211606303 陈水莲 211606302 曾丽丽 211606338 ...

  9. Linux 帮助 man命令

    man 命令 使用权限 所有用户< /pre> 语法格式 man [[ [-c ] [-t ] [Section] ] | [-k | -f ] ] [-F] [-m] [ -MPath ...

  10. General error 2006 MySQL server has gone away

    写入配置文件的办法: max_allowed_packet = 16M //但是这种有时候不支持,1024*1024*16这种有的也不支持 max_allowed_packet = 16777216 ...