Zookeeper客户端使用

二、使用zkclient

在pom.xml中加入依赖

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

直接上代码:

 /**
* Project Name:mk-project <br>
* Package Name:com.suns.zookeeper.zkclient <br>
*
* @author mk <br>
* Date:2018-10-31 11:05 <br>
*/ package com.suns.zookeeper.zkclient; import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat; import java.util.List; /**
* zkclient客户端使用
* 和原生zookeeper优点:
* 1.使用api更方便
* 2.订阅节点数据改变或者子节点变化,只需要订阅一次,便可以一直使用。而原生zookeeper的监听是一次性的,需要重复注册。
* ClassName: ZkClientTest <br>
* Description: <br>
* @author mk
* @Date 2018-10-31 11:05 <br>
* @version
*/
public class ZkClientTest { public static final String connect = "127.0.0.1:2181";
private static ZkClient zkClient = null;
private static String nodePath = "/zkclient1";
private static String nodeChildPath = "/zkclient1/n1/n11/n111/n1111"; public static void main(String[] args) throws Exception { //初始化
init(connect,5000); //订阅节点数据改变或者子节点变化,只需要订阅一次,便可以一直使用。而原生zookeeper的监听是一次性的,需要重复注册。
subscribe(); //新增
create(nodePath,"n1");
//递归新增
createRecursion(nodeChildPath,"n1"); //查询
query(nodePath); //修改
update(nodePath,"n11"); //单个节点删除
// delete(nodePath);
//递归删除
deleteRecursion(nodePath); } private static void deleteRecursion(String path) {
boolean result = zkClient.deleteRecursive(path);
System.out.println("delete:"+"["+path+"],result:"+result);
} private static void delete(String path) {
boolean result = zkClient.delete(path);
System.out.println("delete:"+"["+path+"],result:"+result);
} private static void update(String path, String data) {
Stat stat = zkClient.writeData(path, data);
System.out.println("setData:"+"["+path+"],stat:"+stat);
} private static void query(String path) {
Object o = zkClient.readData(path);
System.out.println("query:"+"["+path+"],result:"+o);
} private static void createRecursion(String path,String data) {
zkClient.createPersistent(path,true);
System.out.println("create:"+"["+path+"-->"+data);
} private static void create(String path, String data) {
boolean exists = zkClient.exists(path);
if(exists){
System.out.println("节点["+path+"]已存在,不能新增");
return;
}
String result = zkClient.create(path, data, CreateMode.PERSISTENT);
System.out.println("create:"+"["+path+"-->"+data+"],result:"+result);
} private static void subscribe() {
//订阅节点内容改变
zkClient.subscribeDataChanges(nodePath, new IZkDataListener() {
@Override
public void handleDataChange(String path, Object data) throws Exception {
System.out.println("handleDataChange----->"+path+"|"+data);
} @Override
public void handleDataDeleted(String path) throws Exception {
System.out.println("handleDataDeleted----->"+path);
}
}); //订阅子节点改变
zkClient.subscribeChildChanges(nodePath, new IZkChildListener() {
@Override
public void handleChildChange(String parentPath, List<String> list) throws Exception {
System.out.println("handleChildChange----->"+parentPath+"|"+list);
}
}); } private static void init(String connect, int sessionTimeout) {
zkClient = new ZkClient(connect, sessionTimeout);
}
}

运行结果:

Zookeeper客户端使用(使用zkclient)的更多相关文章

  1. zookeeper客户端使用第三方(zkclient)封装的Api操作节点

    1.引入依赖 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...

  2. ZooKeeper客户端原生API的使用以及ZkClient第三方API的使用

    这两部分内容的介绍主要讲的是节点及节点内容和子节点的操作,并且讲解的节点的事件监听以及ACL授权 ZooKeeper客户端原生API的使用 百度网盘地址: http://pan.baidu.com/s ...

  3. Zookeeper客户端对比选择_4

    Zookeeper客户端对比选择 本文思维导图 使用框架的好处是自带一套实用的API,但是Zookeeper虽然非常强大,但是社区却安静的可怕,版本更新较慢,下面会先从zookeeper原生API的不 ...

  4. 【分布式】Zookeeper客户端

    一.前言 前篇博客分析了Zookeeper的序列化和通信协议,接着继续学习客户端,客户端是开发人员使用Zookeeper最主要的途径,很有必要弄懂客户端是如何与服务端通信的. 二.客户端 2.1 客户 ...

  5. zookeeper 客户端编程

    zookeeper是一个分布式的开源的分布式协调服务,用它可以来现同步服务,配置维护.zookeeper的稳定性也是可以保证的,笔者曾参与过的使用zookeeper的两个应用,一个是用zookeepe ...

  6. ZooKeeper客户端事件串行化处理

    为了提升系统的性能,进一步提高系统的吞吐能力,最近公司很多系统都在进行异步化改造.在异步化改造的过程中,肯定会比以前碰到更多的多线程问题,上周就碰到ZooKeeper客户端异步化过程中的一个死锁问题, ...

  7. zookeeper客户端操作

    ZooKeeper客户端 zkCli.sh 节点的增删改查 在 bin 目录下的  zkCli.sh  就是ZooKeeper客户端 ./zkCli.sh -timeout 5000  -server ...

  8. zookeeper客户端 zkCli使用及常用命令

    上篇(http://www.cnblogs.com/yangzhenlong/p/8270835.html)zk伪集群搭建好后,使用zkCli连接zk服务 切换到zk1/bin 目录,执行zkCli. ...

  9. Zookeeper客户端Curator基本API

    在使用zookeper的时候一般不使用原生的API,Curator,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连.反复注册Watcher和NodeExistsExceptio ...

随机推荐

  1. 1.2 Mac下配置maven环境变量

    1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.下载Mave ...

  2. 十一:jinja2模板传参

    从后台传参到模板,模板再渲染到前端 传参的时候,可以在html后面加上关键字传参,在模板里面用{{ 参数 }}使用即可,可以传多个参数 也可以使用**传参,取值的时候就直接取内容

  3. MySQL备份工具之mysqlhotcopy

    mysqlhotcopy使用lock tables.flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和运行 ...

  4. python文档的数据读取,把读取数据写入到新的表里

    目的:接口自动化过程需要从表格文件读取,然后把结果写到表格中.没有多余内容全部是精华! 读取文件1 读取文件2 代码如下图: # -*-coding:utf-8 -*-# Author:wangjun ...

  5. SSM的开发步骤分析

    完整开发步骤 导包 spring的jar包 mybatis的jar包 mybatis-Spring的jar包 aop的依赖jar包 oracle等数据库连接的jar包 DataSource的jar包 ...

  6. squid的三种模式

    一.squid代理服务器概述: 概述:Squid Cache(简称为Squid)是http代理服务器软件.Squid用途广泛,可以作为缓存服务器也可以作为缓存代理服务器,代理用户向web服务器请求数据 ...

  7. TypeError: reduction operation 'argmax' not allowed for this dtype

    这个错误真的tmd伤脑筋.我用idxmax函数去求series类型的最大值的索引,结果明明是下面这种数据, 无论我如何pint他的shape,type,他怎么看都是一个满足idxmax函数要求的参数类 ...

  8. 1.MySQL的基本使用

    数据库的操作: 1.Windows中如何使用CMD进入MySQL数据库:     1 Windows+R  -->  输入 cmd 运行     2 C:\Users\***>D:    ...

  9. Revo Uninstaller Pro - 真正彻底卸载软件不留垃圾的强大神器!(清理安装残留文件/注册表)

    大家都知道 Windows 在卸载软件时总是不够彻底,系统C盘总会留下大量难以辨别和清理的垃圾文件和临时文件,时间长了注册表也会变得非常臃肿,不仅浪费硬盘空间,而且也会明显拖慢系统响应和启动速度. R ...

  10. selenium—隐式等待和显式等待

    一.隐式等待和显式等待的区别 隐式等待:是整个页面的等待.设置一个最长的等待时间,在规定时间内整个页面加载完成,则执行下一步,否则继续等待直到最长等待时间结束. 显式等待:是针对某个元素的等待.在设置 ...