java连接zookeeper_java 连接 zookeeper 服务器

本文档通过Java实现连接Zookeeper服务器,演示了如何创建Zookeeper客户端、设置监听器、检查节点存在性等基本操作。示例代码展示了如何使用Zookeeper的API进行交互,并附带了运行日志。

maven导包方式,无架构;

工程目录

bcbef8309bc9b8ca8bfcf7f6e7383385.png

将 zookeeper-3.6.2-bin.tar.gz 中解压缩,复制 conf/logfj.properties 文件到工程 resource 文件夹里,用来打印

7c0796862cdaa110184911c09e7a3b89.png

pom.xml

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">

4.0.0

com.xian

zookeeper

1.0-SNAPSHOT

org.apache.zookeeper

zookeeper

3.5.7

MyWatcher.java

package com.xian;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

import java.nio.file.Watchable;

/**

* Author: sxg

* Date: 2020-10-17 18:26

* Description: 描述

*/

public class MyWatcher implements Watcher {

@Override

public void process(WatchedEvent watchedEvent) {

System.out.println("MyWatcher.process==============" + watchedEvent);

}

}

DataWatcher.java

package com.xian;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

/**

* Author: sxg

* Date: 2020-10-17 19:55

* Description: 描述

*/

public class DataWatcher implements Watcher {

@Override

public void process(WatchedEvent watchedEvent) {

System.out.println("DataWatcher.process==============" + watchedEvent);

}

}

HelloZookeeper.java

package com.xian;

import org.apache.zookeeper.CreateMode;

import org.apache.zookeeper.KeeperException;

import org.apache.zookeeper.ZooDefs;

import org.apache.zookeeper.ZooKeeper;

import org.apache.zookeeper.data.Stat;

import java.io.IOException;

import java.util.List;

/**

* Author: sxg

* Date: 2020-10-17 18:23

* Description: 描述

*/

public class HelloZookeeper {

public static void main(String[] args) throws IOException, InterruptedException, KeeperException {

String server_host_port = "localhost:2181"; // 用 localhost可以连接

//String server_host_port = "127.0.0.1:2181"; // 用本机 ip 也可以连接

//String server_host_port = "192.168.1.100:2181"; // 这里连虚拟机的 ip 就连不上

int sessionTimeout = 3000;

MyWatcher myWatcher = new MyWatcher();

ZooKeeper zkClient = new ZooKeeper(server_host_port, sessionTimeout, myWatcher);

// 获取客户端的状态

//Thread.sleep(4000);

//System.out.println(zkClient.getState()); //CONNECTING 睡眠 4秒后,这里的值 也不变

// 获取节点的内容,即它的子节点

//List children = zkClient.getChildren("/", true); // 默认使用Zookeeper() 构造器中的 watch

//System.out.println("节点的内容:" + children); // 你好

// 创建节点

//zkClient.create("/hello", "你好".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

// 获取节点的值

//byte[] data = zkClient.getData("/hello", true, null); // 这里是不能用根节点 /

//System.out.println("节点的值:" + new String(data)); // [yyy, hello, zookeeper]

// 获取节点的状态

//Stat stat = new Stat();

//byte[] data1 = zkClient.getData("/hello", true, stat);

//System.out.println("节点的状态值:"+stat); // 24,24,1602935648628,1602935648628,0,0,0,0,6,0,24

// 设置单独的监听器,获取节点的值和状态

//Stat stat2 = new Stat();

//byte[] data2 = zkClient.getData("/hello", new DataWatcher(), stat2); // 这里使用的还是Zookeeper() 构造器中的 watch

//System.out.println("ctime:" + stat2.getCtime()); // 1602935648628

//System.out.println("当前节点的变化号:" + stat2.getVersion()); // 0

//System.out.println("data length:" + stat2.getDataLength()); // 6

// 修改节点的数据

//Stat stat = new Stat();

//byte[] data = zkClient.getData("/hello", null, stat);

//zkClient.setData("/hello", "aaa".getBytes(), stat.getVersion());

//byte[] data1 = zkClient.getData("/hello", null, null);

//System.out.println("/hello的值:"+new String(data1)); // aaa

//zkClient.setData("/hello", "bbb".getBytes(), -1); // -1表示不检测版本

//byte[] data1 = zkClient.getData("/hello", null, null);

//System.out.println("/hello的值:"+new String(data1)); // bbb

// 删除节点

//zkClient.delete("/hello", -1);

//List children = zkClient.getChildren("/", true);

//System.out.println("根节点的内容:" + children); // [yyy, zookeeper]

// 判断节点是否存在

Stat stat = zkClient.exists("/hello", false);

System.out.println("是否存在节点 /hello:" + stat); // null // null表示不存在

Stat stat1 = zkClient.exists("/yyy", false);

System.out.println("是否存在节点 /yyy:" + stat1); // 18,18,1602935291756,1602935291756,0,0,0,0,3,0,18 // 返回状态就表示节点存在

zkClient.close(); // 最后需要关闭客户端;

}

}

打印

"C:\Program Files\Java\jdk1.8.0_51\bin\java.exe" -javaagent:D:\ideaIU-2019.1.2.win\lib\idea_rt.jar=45332:D:\ideaIU-2019.1.2.win\bin -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;G:\workspace_idea\exercise\zookeeper\target\classes;G:\repository_maven\org\apache\zookeeper\zookeeper\3.5.7\zookeeper-3.5.7.jar;G:\repository_maven\org\apache\zookeeper\zookeeper-jute\3.5.7\zookeeper-jute-3.5.7.jar;G:\repository_maven\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;G:\repository_maven\io\netty\netty-handler\4.1.45.Final\netty-handler-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-common\4.1.45.Final\netty-common-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-buffer\4.1.45.Final\netty-buffer-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport\4.1.45.Final\netty-transport-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-resolver\4.1.45.Final\netty-resolver-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-codec\4.1.45.Final\netty-codec-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-epoll\4.1.45.Final\netty-transport-native-epoll-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-unix-common\4.1.45.Final\netty-transport-native-unix-common-4.1.45.Final.jar;G:\repository_maven\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;G:\repository_maven\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;G:\repository_maven\log4j\log4j\1.2.17\log4j-1.2.17.jar" com.xian.HelloZookeeper

2020-10-17 20:30:22,910 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.7-f0fdd52973d373ffd9c86b81d99842dc2c7f660e, built on 02/10/2020 11:30 GMT

2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:host.name=LAPTOP-G9IGVP9O.mshome.net

2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:java.version=1.8.0_51

2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:java.vendor=Oracle Corporation

2020-10-17 20:30:22,914 [myid:] - INFO [main:Environment@109] - Client environment:java.home=C:\Program Files\Java\jdk1.8.0_51\jre

2020-10-17 20:30:22,914 [myid:] - INFO [main:Environment@109] - Client environment:java.class.path=C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;G:\workspace_idea\exercise\zookeeper\target\classes;G:\repository_maven\org\apache\zookeeper\zookeeper\3.5.7\zookeeper-3.5.7.jar;G:\repository_maven\org\apache\zookeeper\zookeeper-jute\3.5.7\zookeeper-jute-3.5.7.jar;G:\repository_maven\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;G:\repository_maven\io\netty\netty-handler\4.1.45.Final\netty-handler-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-common\4.1.45.Final\netty-common-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-buffer\4.1.45.Final\netty-buffer-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport\4.1.45.Final\netty-transport-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-resolver\4.1.45.Final\netty-resolver-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-codec\4.1.45.Final\netty-codec-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-epoll\4.1.45.Final\netty-transport-native-epoll-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-unix-common\4.1.45.Final\netty-transport-native-unix-common-4.1.45.Final.jar;G:\repository_maven\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;G:\repository_maven\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;G:\repository_maven\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\ideaIU-2019.1.2.win\lib\idea_rt.jar

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0_51\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk1.8.0_51\bin;D:\scala-2.11.7\bin;D:\maven\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_51\jre\bin;E:\sdk_androidstudio\platform-tools;E:\AndroidStudioConfigFolder;E:\AndroidStudioConfigFolder\.gradle;E:\gradle\bin;C:\ProgramData\chocolatey\bin;E:\VisualSVN Server\bin;E:\VisualSVN Server\bin;E:\nodejs\;E:\Python\Python38;E:\Python\Python38\Scripts;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\admin\AppData\Local\Programs\Python\Launcher\;C:\Users\admin\AppData\Local\Microsoft\WindowsApps;D:\PyCharm Community Edition 2020.1.2\bin;E:\Fiddler;C:\Users\admin\AppData\Roaming\npm;;.

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.io.tmpdir=C:\Users\admin\AppData\Local\Temp\

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.compiler=

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.name=Windows 8.1

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.arch=amd64

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.version=6.3

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:user.name=admin

2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:user.home=C:\Users\admin

2020-10-17 20:30:22,916 [myid:] - INFO [main:Environment@109] - Client environment:user.dir=G:\workspace_idea\exercise

2020-10-17 20:30:22,916 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.free=233MB

2020-10-17 20:30:22,917 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.max=3614MB

2020-10-17 20:30:22,917 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.total=245MB

2020-10-17 20:30:22,921 [myid:] - INFO [main:ZooKeeper@868] - Initiating client connection, connectString=localhost:2181 sessionTimeout=3000 watcher=com.xian.MyWatcher@7a4f0f29

2020-10-17 20:30:22,928 [myid:] - INFO [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation

2020-10-17 20:30:23,014 [myid:] - INFO [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes

2020-10-17 20:30:23,025 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=

2020-10-17 20:30:23,040 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)

2020-10-17 20:30:23,042 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /127.0.0.1:45337, server: localhost/127.0.0.1:2181

2020-10-17 20:30:23,103 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x100198cb7240018, negotiated timeout = 4000

MyWatcher.process==============WatchedEvent state:SyncConnected type:None path:null

是否存在节点 /hello:null

是否存在节点 /yyy:18,18,1602935291756,1602935291756,0,0,0,0,3,0,18

MyWatcher.process==============WatchedEvent state:Closed type:None path:null

2020-10-17 20:30:23,238 [myid:] - INFO [main:ZooKeeper@1422] - Session: 0x100198cb7240018 closed

2020-10-17 20:30:23,238 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100198cb7240018

Process finished with exit code 0

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值