ZooKeeper(二) idea中使用Java操作zookeeper
本章介绍使在idea环境中使用maven工程进行连接zookeeper,并进行简单的增删查改操作。
一、使用的pom依赖
添加zookeeper依赖,以及进行测试的junit测试依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xiaohui.zk</groupId><artifactId>zkdemo1</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.7</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies></project>
二、添加测试类进行连接、新增、修改、查询等操作
1,进行连接zookeeper,并进行创建一个 /huizi 节点
在创建时参数 ZooDefs.Ids.OPEN_ACL_UNSAFE 表示节点的访问权限,OPEN_ACL_UNSAFE 表示可以被所有的客户端节点访问到。
public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点String path = zooKeeper.create("/huizi","nodeValue".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, //CreateMode.PERSISTENT);//四种模式System.out.println("路径:"+path);}}
执行结束后可以通过linux客户端工具在安装目录bin下使用 ./zkCli.sh 进入客户端命令控制台 命令 ls / 查看成功创建节点 huizi 。
2,创建子节点代码
package com.xiaohui.zk.test;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
// String path = zooKeeper.create("/huizi",
// "nodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("路径:"+path);//3, 创建子节点String childenPath = zooKeeper.create("/huizi/childenNode","childenNodeValue".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, //CreateMode.PERSISTENT);//四种模式System.out.println("childenPath路径:"+childenPath);}
}
控制台使用 ls /huizi 查看其下面的子节点:
3,打印父节点和子节点中的值
package com.xiaohui.zk.test;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
// String path = zooKeeper.create("/huizi",
// "nodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("路径:"+path);//3, 创建子节点
// String childenPath = zooKeeper.create("/huizi/childenNode",
// "childenNodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)byte[] value = zooKeeper.getData("/huizi",false,null);System.out.println("p:"+new String(value));List<String> children = zooKeeper.getChildren("/huizi", false);for (String child : children) {System.out.println("c:"+child);}}
}
打印如下:
收到监听:type:None, Path:null, State:SyncConnected
p:nodeValue
c:childenNode
4,修改节点中的值
在set 方法中 最后一个参数 表示版本号,-1 表示可以被所有版本都可以匹配到。
package com.xiaohui.zk.test;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
// String path = zooKeeper.create("/huizi",
// "nodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("路径:"+path);//3, 创建子节点
// String childenPath = zooKeeper.create("/huizi/childenNode",
// "childenNodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)
// byte[] value = zooKeeper.getData("/huizi",false,null);
// System.out.println("p:"+new String(value));
//
// List<String> children = zooKeeper.getChildren("/huizi", false);
// for (String child : children) {
// System.out.println("c:"+child);
// }//5, 修改节点的值zooKeeper.setData("/huizi", "newValue".getBytes(), -1);byte[] value = zooKeeper.getData("/huizi",false,null);System.out.println("data:"+new String(value));}
}
5,删除某个节点,并查看其是否存在
package com.xiaohui.zk.test;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;import java.io.IOException;
import java.util.List;public class FirstTest {@Testpublic void test() throws Exception {//1, 创建zk连接ZooKeeper zooKeeper = new ZooKeeper("172.18.255.118:2181", 2000, new Watcher() {public void process(WatchedEvent watchedEvent) {System.out.println("收到监听:type:"+watchedEvent.getType()+", Path:"+watchedEvent.getPath()+", State:"+watchedEvent.getState());}});//2,创建父节点
// String path = zooKeeper.create("/huizi",
// "nodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("路径:"+path);//3, 创建子节点
// String childenPath = zooKeeper.create("/huizi/childenNode",
// "childenNodeValue".getBytes(),
// ZooDefs.Ids.OPEN_ACL_UNSAFE, //
// CreateMode.PERSISTENT);//四种模式
// System.out.println("childenPath路径:"+childenPath);//4, 获取节点中的值(父节点和子节点)
// byte[] value = zooKeeper.getData("/huizi",false,null);
// System.out.println("p:"+new String(value));
//
// List<String> children = zooKeeper.getChildren("/huizi", false);
// for (String child : children) {
// System.out.println("c:"+child);
// }//5, 修改节点的值
// zooKeeper.setData("/huizi", "newValue".getBytes(), -1);
// byte[] value = zooKeeper.getData("/huizi",false,null);
// System.out.println("data:"+new String(value));//6, 判断某个节点是否存在Stat exists = zooKeeper.exists("/huizi/childenNode", false);System.out.println(exists);//7, 删除节点zooKeeper.delete("/huizi/childenNode", -1);Stat exists1 = zooKeeper.exists("/huizi/childenNode", false);System.out.println(exists1);}
}
打印如下:
收到监听:type:None, Path:null, State:SyncConnected
4294967326,4294967326,1596599387683,1596599387683,0,0,0,0,16,0,4294967326null
ZooKeeper(二) idea中使用Java操作zookeeper相关推荐
- ZooKeeper入门(二)Java操作zookeeper
首先是pom依赖: <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zoo ...
- zookeeper教程,docker 安装,命令,python操作zookeeper,分布式队列,分布式锁
docker安装zookeeper服务端 首先安装单节点的服务端,如果安装多节点的服务端,需要为每个节点配置其他节点的地址. docker run --privileged=true -d --nam ...
- 【Zookeeper】基本使用:Curator操作Zookeeper
针对zookeeper,比较常用的Java客户端有zkclient.curator. 由于 Curator 对于 zookeeper 的抽象层次比较高,简化了 zookeeper客户端的开发量.使得c ...
- java实战:邮件群发推广微信公众号(二),内含java操作excel及java操作mysql
上一篇写好了用于发送邮件的类,本篇把余下的设定定时任务.从excel读取发件人账号.从mysql读取收件人邮箱以及随机标题和内容来实现.先看整个应用的文件框架结构,如下图: 上图中log4j.prop ...
- Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...
- Zookeeper学习之源生API的使用(java与shell操作zookeeper)。
如果不会搭建zookeeper环境:请看此文章:Zookeeper学习之集群环境搭建 1.操作zookeeper(shell) 启动zookeeper客户端:zkCli.sh; 根据提示命令进行操作: ...
- 在Eclipse中运行JAVA代码远程操作HBase的示例
2019独角兽企业重金招聘Python工程师标准>>> 下面是一个在Windows的Eclipse中通过JAVA操作一个Linux上运行的hbase的示例. Hbase的配置需要注意 ...
- 服务注册与发现-Zookeeper(二)
Zookeeper 概述 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目. Zookeeper 工作机制 Zookeeper 从设计模式角度来理解,是一个基 ...
- python 操作 zookeeper 快速入门
python 操作 zookeeper 快速入门 文章目录 python 操作 zookeeper 快速入门 什么是zookeeper python 操作 zk 快速入门 zk节点 创建节点 查询节点 ...
最新文章
- LeetCode简单题之两个数组的交集 II
- usaco Shaping Regions
- three.js绘制过程(二)
- 关于AI方面创业公司的分析
- class function,delphi静态函数的对象基址分析static
- 离散信号处理的基本概念理解(第一章 离散序列和离散系统(全))
- 云服务器与传统服务器的优势差异
- Spark源码阅读环境搭建
- Linux直接复制eclipse也可以使用
- python的评分卡模型
- 关于无盘工作站的初步了解(RPL/PXE)
- UEditor 配置
- VSCode自定义网络背景皮肤
- ChemDraw使用不了怎么办
- linux 英语翻译软件下载,英语翻译神器下载
- 态度篇·与其混不如滚
- ZKNUOJ 1019
- 电脑无线共享手机wify上网
- 常用运营商PLMN值(MCCMNC)
- MS9331--4K hdmi信号放大延长器
热门文章
- 为 SQL Server 启用 AWE 内存。
- 《天下无贼》经典对白
- 苹果系统中国日历服务器,AppleMac苹果电脑最好用的中国农历日历(TinyCal)v1.11.0
- unity和python通讯_Python 与 Unity mlagents 交互 API
- java之线程相关juc
- SpringBoot测试失败并报错: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
- php怎样使用pdo,PHP中使用PDO_PHP教程
- “霸座女”越席乘坐火车并阻碍民警执行职务被拘留
- [洛谷P3521][POI2011]ROT-Tree Rotations
- NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览