Zookeeper java api
Zookeeper java api 主要有以下几个:
| 方法名称 | 描述 |
|---|---|
| String create(final String path, byte data[], List acl, CreateMode createMode) |
创建一个znode节点, 参数: 路径、 znode内容,ACL(访问控制列表)、 znode创建类型 |
| void delete(final String path, int version) |
删除一个znode节点, 参数: 路径、版本号;如果版本号与znode的版本号不一致,将无法删除,是一种乐观加锁机制;如果将版本号设置为-1,不会去检测版本,直接删除; |
| Stat exists(final String path, Watcher watcher) |
判断某个znode节点是否存在 参数: 路径、Watcher(监视器);当这个znode节点被改变时,将会触发当前Watcher |
| Stat exists(String path, boolean watch) |
判断某个znode节点是否存在 参数: 路径、并设置是否监控这个目录节点,这里的 watcher 是在创建 ZooKeeper 实例时指定的 watcher |
| Stat setData(final String path, byte data[], int version) |
设置某个znode上的数据 参数: 路径、数据、版本号;如果为-1,跳过版本检查 |
| byte[] getData(final String path, Watcher watcher, Stat stat) |
获取某个znode上的数据 参数: 路径、监视器、数据版本等信息 |
| List getChildren(final String path, Watcher watcher) |
获取某个节点下的所有子节点 参数: 路径、监视器;该方法有多个重载 |
package com.test.protobuf; import org.apache.zookeeper.*; import java.io.IOException;
import java.util.concurrent.CountDownLatch; /**
* Created by szekinwin on 2017/7/7.
*/
public class ZookeeperDemo { //zookeeper连接地址
private static final String CONNECT_ADDR="172.31.19.222:2181,172.31.19.223:2181,172.31.19.234:2181";
//超时时间
private static final int SESSION_TIMEOUT=2000;
//等待zookeeper连接成功,程序继续往下执行(zookeeper连接是异步连接)
private static final CountDownLatch countDownLatch = new CountDownLatch(1); public static void main (String [] args){
try {
ZooKeeper zooKeeper = new ZooKeeper(CONNECT_ADDR, SESSION_TIMEOUT, new Watcher() {
public void process(WatchedEvent event) {
Event.KeeperState state = event.getState();
Event.EventType type = event.getType();
if(Event.KeeperState.SyncConnected==state){
if(Event.EventType.None==type){
countDownLatch.countDown();
System.out.println("Zookeeper connect successfully!");
}
}
}
});
try {
countDownLatch.await();
try {
//创建节点 节点类型为PERSISTENT 永久型 EPHEMERAL临时节点,客户端session超时这类节点就会被自动删除
zooKeeper.create("/testRoot","testRoot".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//创建子节点 zookeeper java api 不支持递归创建节点
zooKeeper.create("/testRoot/children","children".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//获取节点值
byte [] msg=zooKeeper.getData("/testRoot/children",false,null);
System.out.println(new String(msg));
//修改节点值
zooKeeper.setData("/testRoot/children","testRoot Children".getBytes(),-1);
byte [] msg2=zooKeeper.getData("/testRoot/children",false,null);
System.out.println(new String(msg2));
//判断节点是否存在
System.out.println(zooKeeper.exists("/testRoot/children",false));
//删除节点
zooKeeper.delete("/testRoot/children",-1);
zooKeeper.close();
} catch (KeeperException e) {
e.printStackTrace();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
} }
Zookeeper java api的更多相关文章
- 9. 使用ZooKeeper Java API编程
ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...
- 14.ZooKeeper Java API 使用样例
转自:http://www.aboutyun.com/thread-7332-1-1.html package com.taobao.taokeeper.research.sample; import ...
- zookeeper Java API 简单操作示例
本文主要介绍如何在java IDE中如何应用使用客户端与zookeeper服务器通信. 首先搭建maven环境,并在pom文件中加入zookeeper引用包: <!-- https://mvnr ...
- Zookeeper JAVA API的使用
0. 前言 zookeeper安装及使用 http://www.cnblogs.com/rocky-fang/p/7880309.html 1. 开发环境配置 1.1 idea创建一个maven工程 ...
- zookeeper JAVA API 简单操作
package org.admln.program.Zoo_Test; import java.io.IOException; import java.security.NoSuchAlgorithm ...
- Zookeeper Java API调用
引入zookeeper-3.4.11.jar public class ZooKeeperTest implements Watcher{ //public final static String z ...
- zookeeper java api(使用java代码操作zookeeper)
1 导入相关的pom依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId&g ...
- Zookeeper Curator API 使用
0. 原生 ZOOKEEPER JAVA API http://www.cnblogs.com/rocky-fang/p/9030438.html 1. 概述 Curator采用cache封装对事件 ...
- ZooKeeper Java例子(六)
A Simple Watch Client 为了向你介绍ZooKeeper Java API,我们开发了一个非常简单的监视器客户端.ZooKeeper客户端监视一个ZooKeeper节点的改变并且通过 ...
随机推荐
- Linux磁盘分区工具的使用
----------fdisk分区工具---------- 一..下面来介绍fdisk分区工具的命令格式: fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区 ...
- golang函数学习笔记
golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值 例子1 func add(a, b ...
- 安全测试之bWAPP环境搭建
本篇文章介绍独立安装部署bwapp. 安装环境:window7+IIS7+mysql5.6+php5.6 bWAPP下载地址:https://sourceforge.net/projects/bwap ...
- shell awk实战
一.文本处理 1.按行提取关键字频次(如取第5列) awk 'BEGIN{FS="|"} {a[$5]+=1;} END {for(i in a) print i ":& ...
- C++ 带有通配符*与?的字符串匹配
题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现.写一个算法,比较两个字符串是否相等. 发现许多公司笔试面试都有这道题目,于 ...
- yum install mysql on centos 6.5 zz
http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 1.使用yum命令进行mysql的安装 yum list ...
- karma安装
Last login: Sat Jun :: on ttys000 ➜ ~ cd /Users/wangyizhe/Projects/work/smartcmp/services/new-yacmp/ ...
- 工作中发现Web服务器的磁盘满后故障分析
遇到的问题: 今天收到报警,某台线上的服务器的磁盘已满,但是登上去使用du -sh /log/* 检查, 发现文件的大小远远小于磁盘的空间,此时不知道该如何解决! 解决的方法: 其实,如果只是 ...
- mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法
1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller ...
- kettle中的karaf设置
Spoon.sh设置-Dpentaho.karaf.root.copy.dest.folder=$PENTAHO_KARAF_ROOT -Dpentaho.karaf.root.transient=f ...