日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

本地java判断zk节点是否存在

發布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 本地java判断zk节点是否存在 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【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的子節點個數

?

?

?

總結

以上是生活随笔為你收集整理的本地java判断zk节点是否存在的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。