- 浏览: 623957 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
ZooKeeper提供了Java和C的binding. 本文关注Java相关的API.
准备工作
拷贝ZooKeeper安装目录下的zookeeper.x.x.x.jar文件到项目的classpath路径下.
创建连接和回调接口
首先需要创建ZooKeeper对象, 后续的一切操作都是基于该对象进行的.
以下为各个参数的详细说明:
connectString. zookeeper server列表, 以逗号隔开. ZooKeeper对象初始化后, 将从server列表中选择一个server, 并尝试与其建立连接. 如果连接建立失败, 则会从列表的剩余项中选择一个server, 并再次尝试建立连接.
sessionTimeout. 指定连接的超时时间.
watcher. 事件回调接口.
注意, 创建ZooKeeper对象时, 只要对象完成初始化便立刻返回. 建立连接是以异步的形式进行的, 当连接成功建立后, 会回调watcher的process方法. 如果想要同步建立与server的连接, 需要自己进一步封装.
创建znode
ZooKeeper对象的create方法用于创建znode.
以下为各个参数的详细说明:
path. znode的路径.
data. 与znode关联的数据.
acl. 指定权限信息, 如果不想指定权限, 可以传入Ids.OPEN_ACL_UNSAFE.
指定znode类型. CreateMode是一个枚举类, 从中选择一个成员传入即可. 关于znode类型的详细说明, 可参考本人的上一篇博文.
获取子node列表
ZooKeeper对象的getChildren方法用于获取子node列表.
watch参数用于指定是否监听path node的子node的增加和删除事件, 以及path node本身的删除事件.
判断znode是否存在
ZooKeeper对象的exists方法用于判断指定znode是否存在.
watch参数用于指定是否监听path node的创建, 删除事件, 以及数据更新事件. 如果该node存在, 则返回该node的状态信息, 否则返回null.
获取node中关联的数据
ZooKeeper对象的getData方法用于获取node关联的数据.
watch参数用于指定是否监听path node的删除事件, 以及数据更新事件, 注意, 不监听path node的创建事件, 因为如果path node不存在, 该方法将抛出KeeperException.NoNodeException异常.
stat参数是个传出参数, getData方法会将path node的状态信息设置到该参数中.
更新node中关联的数据
ZooKeeper对象的setData方法用于更新node关联的数据.
data为待更新的数据.
version参数指定要更新的数据的版本, 如果version和真实的版本不同, 更新操作将失败. 指定version为-1则忽略版本检查.
返回path node的状态信息.
删除znode
ZooKeeper对象的delete方法用于删除znode.
version参数的作用同setData方法.
其余接口
请查看ZooKeeper对象的API文档.
需要注意的几个地方
znode中关联的数据不能超过1M. zookeeper的使命是分布式协作, 而不是数据存储.
getChildren, getData, exists方法可指定是否监听相应的事件. 而create, delete, setData方法则会触发相应的事件的发生.
以上介绍的几个方法大多存在其异步的重载方法, 具体请查看API说明
转自:http://coolxing.iteye.com/blog/1871347
参考:http://www.sxt.cn/u/756/blog/4983
准备工作
拷贝ZooKeeper安装目录下的zookeeper.x.x.x.jar文件到项目的classpath路径下.
创建连接和回调接口
首先需要创建ZooKeeper对象, 后续的一切操作都是基于该对象进行的.
ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) throws IOException
以下为各个参数的详细说明:
connectString. zookeeper server列表, 以逗号隔开. ZooKeeper对象初始化后, 将从server列表中选择一个server, 并尝试与其建立连接. 如果连接建立失败, 则会从列表的剩余项中选择一个server, 并再次尝试建立连接.
sessionTimeout. 指定连接的超时时间.
watcher. 事件回调接口.
注意, 创建ZooKeeper对象时, 只要对象完成初始化便立刻返回. 建立连接是以异步的形式进行的, 当连接成功建立后, 会回调watcher的process方法. 如果想要同步建立与server的连接, 需要自己进一步封装.
public class ZKConnection { /** * server列表, 以逗号分割 */ protected String hosts = "localhost:4180,localhost:4181,localhost:4182"; /** * 连接的超时时间, 毫秒 */ private static final int SESSION_TIMEOUT = 5000; private CountDownLatch connectedSignal = new CountDownLatch(1); protected ZooKeeper zk; /** * 连接zookeeper server */ public void connect() throws Exception { zk = new ZooKeeper(hosts, SESSION_TIMEOUT, new ConnWatcher()); // 等待连接完成 connectedSignal.await(); } public class ConnWatcher implements Watcher { public void process(WatchedEvent event) { // 连接建立, 回调process接口时, 其event.getState()为KeeperState.SyncConnected if (event.getState() == KeeperState.SyncConnected) { // 放开闸门, wait在connect方法上的线程将被唤醒 connectedSignal.countDown(); } } } }
创建znode
ZooKeeper对象的create方法用于创建znode.
String create(String path, byte[] data, List acl, CreateMode createMode);
以下为各个参数的详细说明:
path. znode的路径.
data. 与znode关联的数据.
acl. 指定权限信息, 如果不想指定权限, 可以传入Ids.OPEN_ACL_UNSAFE.
指定znode类型. CreateMode是一个枚举类, 从中选择一个成员传入即可. 关于znode类型的详细说明, 可参考本人的上一篇博文.
/** * 创建临时节点 */ public void create(String nodePath, byte[] data) throws Exception { zk.create(nodePath, data, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); }
获取子node列表
ZooKeeper对象的getChildren方法用于获取子node列表.
List getChildren(String path, boolean watch);
watch参数用于指定是否监听path node的子node的增加和删除事件, 以及path node本身的删除事件.
判断znode是否存在
ZooKeeper对象的exists方法用于判断指定znode是否存在.
Stat exists(String path, boolean watch);
watch参数用于指定是否监听path node的创建, 删除事件, 以及数据更新事件. 如果该node存在, 则返回该node的状态信息, 否则返回null.
获取node中关联的数据
ZooKeeper对象的getData方法用于获取node关联的数据.
byte[] getData(String path, boolean watch, Stat stat);
watch参数用于指定是否监听path node的删除事件, 以及数据更新事件, 注意, 不监听path node的创建事件, 因为如果path node不存在, 该方法将抛出KeeperException.NoNodeException异常.
stat参数是个传出参数, getData方法会将path node的状态信息设置到该参数中.
更新node中关联的数据
ZooKeeper对象的setData方法用于更新node关联的数据.
Stat setData(final String path, byte data[], int version);
data为待更新的数据.
version参数指定要更新的数据的版本, 如果version和真实的版本不同, 更新操作将失败. 指定version为-1则忽略版本检查.
返回path node的状态信息.
删除znode
ZooKeeper对象的delete方法用于删除znode.
void delete(final String path, int version);
version参数的作用同setData方法.
其余接口
请查看ZooKeeper对象的API文档.
需要注意的几个地方
znode中关联的数据不能超过1M. zookeeper的使命是分布式协作, 而不是数据存储.
getChildren, getData, exists方法可指定是否监听相应的事件. 而create, delete, setData方法则会触发相应的事件的发生.
以上介绍的几个方法大多存在其异步的重载方法, 具体请查看API说明
转自:http://coolxing.iteye.com/blog/1871347
参考:http://www.sxt.cn/u/756/blog/4983
- codeTest.rar (2.1 KB)
- 下载次数: 0
发表评论
-
Zookeeper的四字命令
2017-05-18 20:39 543http://www.cnblogs.com/wuxl360/ ... -
Zookeeper开源客户端框架Curator简介
2016-10-25 08:43 493ZooKeeper原生的API支持通过注册Watcher来进行 ... -
Curator Framework的基本使用方法
2016-10-21 15:17 1039Curator Framework提供了简化使用zookeep ... -
ZooKeeper学习总结
2016-09-30 15:18 401参考:http://www.tuicool.com/artic ... -
推荐一个zookeeper信息查看工具
2016-08-31 16:01 1686zookeeper信息查看工具 下载地址:https://i ... -
Paxos算法细节详解(一)--通过现实世界描述算法
2016-08-24 16:29 533http://www.cnblogs.com/endsock/ ... -
ZooKeeper学习总结 第一篇:ZooKeeper快速入门
2016-08-22 16:23 418http://www.cnblogs.com/leocook/ ... -
zookeeper原理(转)
2016-08-22 14:02 376ZooKeeper是一个分布式的 ... -
zookeeper客户端curator使用手记
2016-08-09 15:10 454http://www.tuicool.com/articles ... -
Zookeeper的一致性协议:Zab
2016-08-01 09:21 646Zookeeper使用了一种称为Zab(Zookeeper A ... -
ZooKeeper源码阅读(一):ZAB协议
2016-07-29 14:29 650ZooKeeper内部有一个in-memo ... -
Zookeeper基本原理与应用场景
2016-07-28 18:51 301http://blog.csdn.net/yunpiao123 ... -
一步一步理解Paxos算法
2016-07-21 14:34 599背景 Paxos算法是Lamport ... -
Paxos算法简述
2016-07-21 14:10 365Paxos算法是分布式中一个著名的一致性算法。它的假设前提是, ... -
Zookeeper-Zookeeper leader选举
2016-07-20 09:05 522在上一篇文章中我们大 ... -
部署与管理ZooKeeper(转)
2016-07-19 09:17 365http://www.cnblogs.com/ggjuchen ... -
ZooKeeper原理及使用
2016-08-02 08:27 400ZooKeeper是Hadoop Ecosystem中非常重要 ...
相关推荐
Zookeeper Java API 使用指南 Zookeeper 是一个广泛使用的分布式协调服务,提供了高效、可靠、可扩展的解决方案。Java API 是 Zookeeper 的一个重要组件,提供了丰富的接口让开发者可以轻松地使用 Zookeeper。下面...
4. **数据操作**:Curator 提供了简单的 API 来读写 ZooKeeper 节点的数据,如 `create()`, `setData()`, `getData()` 等。例如,创建节点和设置数据: ```java client.create().creatingParentsIfNeeded().for...
ZooKeeper Java API编程实例分析 ZooKeeper Java API编程是 ZooKeeper 的一个重要组件,它提供了 Java 语言的 API 接口,让开发者可以使用 Java 语言编写 ZooKeeper 应用程序。下面我们将详细分析 ZooKeeper Java ...
**Zookeeper API(Java)入门详解** Zookeeper是一款分布式协调服务,由Apache基金会开发,它为分布式应用提供一致性服务,包括命名服务、配置管理、集群同步、分布式锁等。在Java开发中,我们通常会使用Zookeeper...
在IT行业中,Zookeeper和Java API的结合使用是分布式系统管理的重要组成部分。Zookeeper是由Apache软件基金会开发的一个开源项目,它提供了一种高效且可靠的分布式协调服务,常用于配置管理、命名服务、集群管理和...
zookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例.zipzookeeper-api基础java案例....
在本文中,我们将深入理解Zookeeper的基本操作,包括通过shell客户端进行交互,以及使用Java API进行编程,并探讨其在实际应用中的示例。 一、Zookeeper Shell操作 1. 连接Zookeeper客户端:使用`zkCli.sh`命令...
Zookeeper Api(java)入门与应用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储...
在Java开发中,我们通常使用三种方式来操作Zookeeper:原生API、zkClient和Curator。接下来,我们将详细探讨这三种方式。 **一、Zookeeper原生API** Zookeeper提供了Java API,可以直接与Zookeeper服务器进行交互...
在Java环境中,ZooKeeper提供了一套丰富的API,使得开发者能够方便地进行节点操作和Watch机制的使用。本篇文章将深入探讨如何使用Java API在ZooKeeper中进行节点的操作,并介绍Watch观察者的应用。 1. **ZooKeeper...
它的客户端API是开发者与ZooKeeper交互的主要接口,提供了丰富的功能,包括数据节点的创建、删除、更新、读取,以及监控事件的订阅等。本文将深入探讨ZooKeeper客户端API的使用方法和核心概念。 ### 1. 连接...
2. **Zookeeper Java API**:Apache ZooKeeper提供了Java API供开发者进行编程,用于实现分布式服务管理。在Java项目中,我们通常通过Maven或者Gradle来引入Zookeeper的依赖,如上述代码所示引入的是`org.apache....
Java提供了ZooKeeper的API,使得我们可以方便地进行节点的创建、读取、更新和删除操作。`01_zookeeper介绍和应用场景.docx`、`02_使用java操作zookeeper创建节点.docx`、`03_使用java操作zk创建节点02.docx`这些文档...
ZooKeeper API是开发者与ZooKeeper交互的主要方式,它提供了丰富的Java客户端接口,使得开发者能够方便地进行数据的读写、监控节点变化、创建和删除节点等操作。以下是一些关键的ZooKeeper API知识点: 1. **连接与...
ZooKeeper Java API 是一套用于与ZooKeeper交互的接口,它允许开发者在Java应用程序中实现对ZooKeeper集群的创建、删除、查看、设置和权限管理等操作。ZooKeeper是一个分布式的协调服务,广泛应用于分布式系统中,如...
本文将深入探讨如何使用Java客户端API来对Zookeeper的Znode进行增删改查操作,并讨论同步与异步两种方式的使用。 首先,要使用Java客户端API访问Zookeeper,你需要引入相关的依赖。在Maven项目中,可以在pom.xml...
4. **slf4j-api.jar**:Simple Logging Facade for Java,它提供一个简单的API,使得最终用户可以在部署时插入所需的日志库,比如log4j。SLF4J允许在部署时选择不同的日志实现,提高了灵活性。 5. **slf4j-log4j12....
使用JMX监控Zookeeper状态Java API 在分布式系统中,Zookeeper是经常使用的分布式协调服务,用于维护和管理分布式应用程序的配置信息和状态。为了监控Zookeeper的状态,需要使用监控工具来实时监控Zookeeper的运行...