【README】java 本地连接zk集群,https://blog.csdn.net/PacosonSWJTU/article/details/111404364
【1】判断节点是否存在
/*** 测试 zk * @author pacoson**/
public class TestZK {/*** zk server 连接串 */private String connectString = "192.168.163.201:2181,192.168.163.202:2181,192.168.163.203:2181";/*** 超时时间*/private int sessionTimeout = 3000; /*** zk客户端实例 */private ZooKeeper zkClient; /*** 0-获取zk连接 * @throws IOException*/@Before public void init() throws IOException {/* 连接zk服务器 */zkClient = new ZooKeeper(connectString, sessionTimeout, new Watcher() {@Overridepublic void process(WatchedEvent event) {try {/*3-获取子节点并监控节点变化*/System.out.println("-------watcher start---------");zkClient.getChildren("/", true).stream().forEach(System.out::println);System.out.println("-------watcher end ---------");} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}});}/*** 4-判断节点是否存在 * @throws InterruptedException * @throws KeeperException */@Testpublic void exist() throws KeeperException, InterruptedException {Stat stat = zkClient.exists("/shanghai", false);System.out.println(stat);}}
log, 输出的是 stat.toString() 方法
-------watcher start---------
12884901938,12884901938,1608390430303,1608390430303,0,0,0,0,13,0,12884901938
我们看下 zkcli on centos 查看 zk节点 /shanghai 的信息,如下:
[zk: localhost:2181(CONNECTED) 7] get /shanghai
shanghai city
cZxid = 0x300000032
ctime = Sat Dec 19 23:07:10 CST 2020
mZxid = 0x300000032
mtime = Sat Dec 19 23:07:10 CST 2020
pZxid = 0x300000032
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0
【2】 po出 Stat.toString()
public String toString() {try {java.io.ByteArrayOutputStream s =new java.io.ByteArrayOutputStream();CsvOutputArchive a_ = new CsvOutputArchive(s);a_.startRecord(this,"");a_.writeLong(czxid,"czxid");a_.writeLong(mzxid,"mzxid");a_.writeLong(ctime,"ctime");a_.writeLong(mtime,"mtime");a_.writeInt(version,"version");a_.writeInt(cversion,"cversion");a_.writeInt(aversion,"aversion");a_.writeLong(ephemeralOwner,"ephemeralOwner");a_.writeInt(dataLength,"dataLength");a_.writeInt(numChildren,"numChildren");a_.writeLong(pzxid,"pzxid");a_.endRecord(this,"");return new String(s.toByteArray(), "UTF-8");} catch (Throwable ex) {ex.printStackTrace();}return "ERROR";}
序号 | key | 描述 |
1 | cZxid | 创建事务编号 |
2 | ctime | 创建时间 |
3 | mZxid | 修改事务编号 |
4 | mtime | 修改时间 |
5 | pZxid | 最后更新的子节点 |
6 | cversion | 子节点变化编号 |
7 | dataVersion | 数据变化编号 |
8 | aclVersion | 访问控制列表的变化号 |
9 | ephemeralOwner | 若是临时节点,表示的是znode拥有者的session id,如果不是,则是0 |
10 | dataLength | znode的数据长度 |
11 | numChildren | znode的子节点个数 |