【ZkClient】 

ZkClient 是 GitHub 上一个开源的客户端,如果我们用 Maven 来管理工程,则引用如下。

 <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

创建连接

  • public ZkClient(String serverstring)
  • public ZkClient(String serverstring,int connectionTimeout)
  • public ZkClient(String serverstring,int sessionTimeout,int connectionTimeout)
  • public ZkClient(String serverstring,int sessionTimeout,int connectionTimeout,ZkSerializer zkSerializer)
  • public ZkClient(IZkConnection connection)
  • public ZkClient(IZkConnection connection,int connectionTimeout)
  • public ZkClient(IZkConnection connection,int connectionTimeout,ZkSerializer zkSerializer)
package zookeeper.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class OpenZkClient {

	public static void main(String[] args) {

		ZkClient client = new ZkClient("127.0.0.1:2181",5000);
System.out.println(client.getChildren("/")); } }

简单来说,开源客户端相对于原 API,主要是将比较繁琐注册,删除节点不能有子节点,新增节点必须有父节点,等等一些容易出错的地方进行封装。封装以后程序员开发的时候就可以不 用考虑这些小的细节,从而提高开发效率。

还是来说说构造器参数的含义:

serverstring 可以指定单个服务器地址也可以是多个,这个和原 API 创建连接构造参数是一样的含义。

connectionTimeout,sessionTimeout 是连接超时时间和会话超时时间。单位都是毫秒,其中会话默认是 30000 毫秒,也就是 30 秒。

connection 是 IZkConnection 的接口实现类。

zkSerializer 自定义的序列化器,关于序列化和反序列化是一个很大的话题,有 Java 自带的序列化工具,也有很多开源的序列化工具,以后会写一章序列化。

创建节点

  • String create(final String path,Object data,final CreateMode mode)
  • String create(final String path,Object data,final List<ACL> acl,final CreateMode mode)
  • void create(final String path,Object data,final CreateMode mode,final AsyncCallback.StringCallback callback,final Object data)
  • void createEphemeral(final String path)
  • void createEphemeral(final String path,final Object data)
  • void createPersistent(String path)
  • void createPersistent(String path,boolean createParents)
  • void createPersistent(String path,Object data)
  • void createPersistent(String path,List<ACL> acl,Object data)
  • void createPersistentSequential(String path,Object data)
  • void createEphemeralSequential(final String path,final Object data)

创建节点和原生 API 相比,原生只能传 byte 数组,这里可以传 Object。而且父节点不存在可以指定是否创建。

 删除节点

  • boolean delete(final String path)
  • delete(final String path,final AsyncCallback.VoidCallback callback,final Object context)
  • boolean deleteRecursive(String path)

说一下 deleteRecursive,原生 API 删除节点如果有子节点则必须把子节点都删掉才可以,这里的函数则不需要,它会自动删除所有的子节点。

读取数据

 (一)、getChildren

  • List<String> getChildren(String path)

(二)、getData

  • <T extends Object> T readData(String path)
  • <T extends Object> T readData(String path,boolean returnNullIfPathNotExists)
  • <T extends Object> T readData(String path,Stat stat)

这里说一下 returnNullIfPathNotExists,原生 API 读取数据,如果 path 不存在就会报错,这里设置 returnNullIfPathNotExists 为 true 则不会报错,会返回 null。

更新数据

  • void writeData(String path,Object data)
  • void writeData(final String path,Object data,final int expectedVersion)

检测节点是否存在

  •  boolean exists(final String path)

谢谢大家观看!

聊聊、Zookeeper 客户端 ZkClient的更多相关文章

  1. ZooKeeper:第三方客户端 ZKClient

    ZKClient ZKClient的设计 ZKClient组件说明 重要的处理流程说明 启动ZKClient 为节点注册Watcher ZooKeeper的变更操作 客户端处理变更 序列化处理 ZKC ...

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

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

  3. 七:zooKeeper开源客户端ZkClient的api测试

    ZkClient是Gitthub上一个开源的ZooKeeper客户端.ZKClient在ZooKeeper原生API接口之上进行了包装,是一个更加易用的ZooKeeper客户端.同时ZKClient在 ...

  4. Zookeeper客户端使用(使用zkclient)

    Zookeeper客户端使用 二.使用zkclient 在pom.xml中加入依赖 <dependency> <groupId>com.101tec</groupId&g ...

  5. zookeeper之三 ZKClient客户端的使用

    ZKClient在原生API接口上进行了包装,同时在内部实现了诸如session超时重连.watcher反复注册等功能,使得zookeeper客户端繁琐的细节对开发人员透明.下面将从以下几个方面来使用 ...

  6. Zookeeper客户端对比选择_4

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

  7. 六、Zookeeper-开源客户端ZkClient与Curator

    ZkClient 从创建会话.创建节点.读取数据.更新数据.删除节点拉介绍ZkClient 添加依赖: pom.xml <dependency> <groupId>com.10 ...

  8. 【分布式】Zookeeper客户端

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

  9. zookeeper 客户端编程

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

随机推荐

  1. cf976d Degree Set

    ref #include <algorithm> #include <iostream> #include <cstdio> #include <vector ...

  2. 63、加速android应用(转载)

    本文转自 http://www.devtf.cn/?p=1097 原文链接 : Speed up your app原文作者 : UDI COHEN译文出自 : 开发技术前线 www.devtf.cn. ...

  3. 【Best Time to Buy and Sell Stock II】cpp

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  4. vlc无法播放.flv视频文件

    解决方法:https://videoconverter.wondershare.com/vlc/flv-not-displaying-video-vlc-media-player.html. 在pre ...

  5. 获取表的字段例如 col1,col2,col3

    create function [dbo].[f_getcolsByName](@tableName varchar(50)) returns varchar(1000)asbegin declare ...

  6. c++ stl在acm的入门及使用

    stl的全称为Standard Template Library,即为标准模板库,它主要依赖于模板,而不是对象,所以你需要对这个模板进行实例化,选择你要使用的类型.我们用的都是一些简单的容器吧 这里可 ...

  7. tmux使用备忘

    创建新的session tmux 查看已有session tmux ls 进入tmux后 默认快捷键前缀为Ctrl+b,可以通过配置文件来修改 从session中断开 C-b d 给session改名 ...

  8. 逆向中静态分析工具——IDA初学者笔记

    逆向中静态分析工具——IDA初学者笔记 //****************************************************************************** ...

  9. 个人环境搭建——版本控制SVN

    版本控制SVN SVN服务器配置: 第一部分:svn服务器搭建(主要是四步走) 参考:http://www.son1c.cn/show/920.html 一,安装Subversion sudo apt ...

  10. topK问题解法

    topK问题的最佳解法是堆排,下面介绍用堆排来解决该问题. 堆排解决topK问题的思路,取出前K个数,最重要的就是要减少比较的次数,用堆排维护一个K大小的堆,比如一个小顶堆,则堆顶为堆中最小的值,将堆 ...