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. 支持向量机(理论+opencv实现)

    从基础开始讲起,没有这些东西看支持向量机真的很难!   1.拉格朗日乘子(Lagrangemultiplier)   假设需要求极值的目标函数(objectivefunction)为f(x,y),限制 ...

  2. uva-10050-模拟水题

    一个社会研究组织决定通过一组简单的参数来模拟国家政党的行为.第一个参数一个正整数h(叫做罢工参数),用于指示在对应的政党在俩个连续休假之间的平均天数.虽然这个参数太简单了,它不是最完美的参数.但是它还 ...

  3. OpenACC数据管理语句

    ▶ 书中第4章,数据管理部分的代码和说明 ● 代码,关于 copy,copyin,copyout,create #include <stdio.h> #include <openac ...

  4. 0_Simple__simpleCubemapTexture

    立方体纹理贴图 ▶ 源代码.用纹理方法把元素按原顺序从 CUDA3D 数组中取出来,求个相反数放入全局内存,输出. #include <stdio.h> #include "cu ...

  5. DSHTTPService

    DSHTTPService Filters 压缩过滤器的使用 The Filters property specifies the DataSnap communication filters for ...

  6. MyEclipse jsp 中文乱码

    在最开始加上 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  7. DOS系统变量

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置.%APPDATA% : 列出应用程序数据的默认存放位置.%CD% : 列出当前目录.%CLIENTNAME% : 列出联接到 ...

  8. UI5-文档-4.9-Component Configuration

    在我们介绍了模型-视图-控制器(MVC)概念的所有三个部分之后,现在我们将讨论SAPUI5的另一个重要的结构方面. 在这一步中,我们将把所有UI资产封装在一个独立于索引的组件中.html文件.组件是S ...

  9. 实现spring IOC的常见二种方法 setter注入与构造器注入

    案例: beans.xml配置 <?xml version="1.0" encoding="UTF-8"?><beansxmlns=" ...

  10. select 1 与 select null (转)

    1.Select 1 在这里我主要讨论的有以下几个select 语句: table表是一个数据表,假设表的行数为10行,以下同. 1:select  1 from table 2:select cou ...