聊聊、Zookeeper 客户端 ZkClient
【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的更多相关文章
- ZooKeeper:第三方客户端 ZKClient
ZKClient ZKClient的设计 ZKClient组件说明 重要的处理流程说明 启动ZKClient 为节点注册Watcher ZooKeeper的变更操作 客户端处理变更 序列化处理 ZKC ...
- ZooKeeper客户端原生API的使用以及ZkClient第三方API的使用
这两部分内容的介绍主要讲的是节点及节点内容和子节点的操作,并且讲解的节点的事件监听以及ACL授权 ZooKeeper客户端原生API的使用 百度网盘地址: http://pan.baidu.com/s ...
- 七:zooKeeper开源客户端ZkClient的api测试
ZkClient是Gitthub上一个开源的ZooKeeper客户端.ZKClient在ZooKeeper原生API接口之上进行了包装,是一个更加易用的ZooKeeper客户端.同时ZKClient在 ...
- Zookeeper客户端使用(使用zkclient)
Zookeeper客户端使用 二.使用zkclient 在pom.xml中加入依赖 <dependency> <groupId>com.101tec</groupId&g ...
- zookeeper之三 ZKClient客户端的使用
ZKClient在原生API接口上进行了包装,同时在内部实现了诸如session超时重连.watcher反复注册等功能,使得zookeeper客户端繁琐的细节对开发人员透明.下面将从以下几个方面来使用 ...
- Zookeeper客户端对比选择_4
Zookeeper客户端对比选择 本文思维导图 使用框架的好处是自带一套实用的API,但是Zookeeper虽然非常强大,但是社区却安静的可怕,版本更新较慢,下面会先从zookeeper原生API的不 ...
- 六、Zookeeper-开源客户端ZkClient与Curator
ZkClient 从创建会话.创建节点.读取数据.更新数据.删除节点拉介绍ZkClient 添加依赖: pom.xml <dependency> <groupId>com.10 ...
- 【分布式】Zookeeper客户端
一.前言 前篇博客分析了Zookeeper的序列化和通信协议,接着继续学习客户端,客户端是开发人员使用Zookeeper最主要的途径,很有必要弄懂客户端是如何与服务端通信的. 二.客户端 2.1 客户 ...
- zookeeper 客户端编程
zookeeper是一个分布式的开源的分布式协调服务,用它可以来现同步服务,配置维护.zookeeper的稳定性也是可以保证的,笔者曾参与过的使用zookeeper的两个应用,一个是用zookeepe ...
随机推荐
- [oldboy-django][1初始django]昨日回顾
1 web框架的本质:socket客户端和服务端通信,socket遵循http协议(短连接,无状态),规定了数据格式(消息头,消息体):传输的数据本质上是字符串 2 django: django安装( ...
- 集训队日常训练20181117 DIV2
大佬们一顿操作猛如虎,拼命AC强啊 4262: 区间异或 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal ...
- [译]从列表或字典创建Pandas的DataFrame对象
原文来源:http://pbpython.com/pandas-list-dict.html 介绍 每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的D ...
- Win右键管理员权限的获取
Windows Registry Editor Version 5.00 ;取得文件修改权限 [HKEY_CLASSES_ROOT\*\shell\runas] @="管理员权限" ...
- [UOJ#132][BZOJ4200][luogu_P2304][NOI2015]小园丁与老司机
[UOJ#132][BZOJ4200][luogu_P2304][NOI2015]小园丁与老司机 试题描述 小园丁 Mr. S 负责看管一片田野,田野可以看作一个二维平面.田野上有 \(n\) 棵许愿 ...
- 【11】 Express安装入门与模版引擎ejs
前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use([p ...
- jsonp 格式
jQuery(document).ready(function(){ $.ajax({ type: "get", async: false, url: "http://f ...
- 【CF1016D】Vasya And The Matrix(构造)
题意: 思路:构造方式见代码…… #include<cstdio> #include<cstring> #include<iostream> #include< ...
- [LeetCode] Binary Tree Postorder Traversal dfs,深度搜索
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
- 【全局变量】mysql查看全局变量以及设置全局变量的值
1.查看mysql的所有全局变量的值 SHOW GLOBAL VARIABLES 或者 SHOW VARIABLES mysql有很多全局变量,包括系统的一些基本信息,以及mysql的一些基本配置都可 ...