开发者学堂课程【大数据 ZooKeeper 快速入门: Java API:介绍&创建节点】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/549/detail/7570
Java API:介绍&创建节点
目录:
一、zookeeper 的 JavaAPI 介绍
二、JavaAPI 基本使用
课程概要:下面学习在 JavaAPI 中操作 zookeeper 集群
一.Zookeeper Java API
org.apache.zookeeper.Zookeeper
Zookeeper是在Java中客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。在zookeeper类上提供了相应的方法,例如节点的创建、修改和删除等
org. apache.z.ookeeper.Watcher
Watcher 接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState 和 EventType 两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法: process (WatchedEvent event)。
process 方法是 Watcher 接口中的一个回调方法,当 ZooKeeper 向客户端发送一个 Watcher 事件通知时,客户端就会对相应的 process 方法进行回调,从而实现对事件的处理。
此逻辑即为 javaAPI 操作 zookeeper 类
二、基本使用
1. 建立 java maven 项目
引入 maven pom 坐标。
只需要把 zookeeper 引入,版本号与服务器保持一致
<dependency>
<groupId>org.apache.zookeeper</groupld>
<artifactId>zookeeper</artifactld>
<version>3.4.9K/version>
</ dependency>
2. 在 IDEA 中创建一个工程
(1)创建 maven 项目
(2)选择 maven 工程点击下一步,填写组织名和框架名称
(3)项目工程名称和存储路径
最终创建结果图:
在 pom.xml 中,把 zookeeper 依赖复制进入刷新即可
(4)Java 代码开发
在 main 方法中创建一个包,创建 TestZKClient.java
//创建 main 方法
public static void main(String[] args) throws Exception{
//注意导包:引入 org下的 zookeeper
//构造 JAVA 的 zookeeper 客户端
ZooKeeper zk = new ZooKeeper(
//连接信息:IP 和端口,毫秒超时事件,监听
//本地未配置 host 映射,此处应写 ip
"node-1:2181, node-2:2181, node-3:2181",30000,new Watcher()
) {
@Override
//此处为事件通知的回调方法,客户端在此处进行逻辑
public void process (WatchedEvent event){
System. out. println(”事件类型为:” + event.getState( ) ;
System. out. println(”事件类型为:” + event.getType( ) ;
System. out. println("事件发生的路径: “+ event. getPath);
}) ;
//创建一个节点
//在根目录下创建 myGirls,数据为性感的
zk.create("/myGirls,
”
”性感的".getBytes("UTF-8"),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT)
Zk.close()
代码运行:没有zk方法创建节点的运行
此处打印三句话,第一个表示客户端与集群连接,客户端连接为 None
代码运行:
#在服务器上查看是否创建成功
[zk:localhost:2181(CONNECTED) 15] ls /
运行结果:
[myGrills00000000011,hellozk,watchtest]
#查看数据
[zk:localhost:2181(CONNECTED) 15] get /myGrills00000000011
运行结果:
性感的
czxid =
0
x200000051
ctime = Thu an o416:04:25 cST 2018
mzxid =
0
x200000051
mtime = Thu an0416:04:25 cST 2018
pzxid =
0
x200000051
cversion =
0
dataversion =
0
ac1version =
0
ephemera1owner =
0
x
0
dataLength = 9
numchi1dren =
0