Zookeeper常用命令行及API
一、Zookeeper常用命令行
1.啟動zookeeper客戶端(在啟動zookeeper集群后啟動進行調(diào)試)
zkCli.sh
2.查看幫助、操作歷史
help、history
3.查看當前Znode的目錄
ls / ls2 / (查看當前Znode的詳細信息)
4.創(chuàng)建Znode
(1)默認:create 路徑 內(nèi)容
create /Wyh 18yearsold
(2)創(chuàng)建短暫的Znode ephemeral
create -e /dilireba beautiful
(3)創(chuàng)建帶序號的Znode sequential
create -s /yangmi justsoso
(4)創(chuàng)建短暫帶序號的Znode
create -e -s /wyh cool
5.查看Znode
get /Wyh
6.修改Znode
set /Wyh
7.刪除Znode
delete /Wyh
rmr /Wyh =>遞歸刪除,即刪除該節(jié)點及該節(jié)點下所有子節(jié)點
8.監(jiān)聽節(jié)點
(1)監(jiān)聽節(jié)點的子節(jié)點,即監(jiān)聽路徑
ls / watch
(2)監(jiān)聽節(jié)點的內(nèi)容
get / watch
9.查看節(jié)點狀態(tài)
stat /Wyh
?
二、Zookeeper常用API
1.準備工作,zookeeper的依賴:
可以解壓其壓縮包,將lib目錄下的依賴包導入到編譯器;
也可以使用maven,maven配置:
<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.10</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency> 2.常用方法講解:
?? (1)首先創(chuàng)建客戶端類ZKClient
在類中定義全局變量連接字段connectString、連接超時sessionTimeout、客戶端類比變量zkCli;
?? (2)初始化客戶端
定義初始化方法init,new一個zookeeper賦值給zkCli,并設置它的變量connectString,sessionTimeout,new Watcher(),置回調(diào)監(jiān)聽watcher;
???(輸出事件event的路徑、狀態(tài)、類型,并用try/catch拋出異常)
? (3)創(chuàng)建節(jié)點方法
定義創(chuàng)建節(jié)點方法createZnode,調(diào)用客戶端create方法,設置路徑、編輯內(nèi)容并轉(zhuǎn)化為byte類型、應答類型、節(jié)點類型,然后將路徑賦值給字符串變量path
,輸出path;
?? (4)獲取子節(jié)點方法
??? 定義方法getZnode,調(diào)用客戶端getChildren方法,設置目標路徑、是否監(jiān)聽,把獲取的子節(jié)點的名稱賦值給字符串集合children,使用 for循環(huán)遍歷children集合;
? (5)刪除節(jié)點方法
??? 定義方法deleteZnode,調(diào)用delete方法,設置目標節(jié)點、版本值(-1為刪除),然后可以遍歷目標刪除節(jié)點的父節(jié)點;
?? ? (6)修改節(jié)點方法、并查看
??? 定義方法setZnode,調(diào)用setData方法,設置目標節(jié)點并轉(zhuǎn)化為byte類型、版本值(-1),調(diào)用getData方法,設置查看節(jié)點、是否監(jiān)聽、狀態(tài)(new Stat()),將得到的值賦值給字節(jié)集合data,將data強轉(zhuǎn)為string類型數(shù)據(jù)進行查看。
3.具體代碼
/*** @author: PrincessHug* @date: 2019/2/25, 13:28* @Blog: https://www.cnblogs.com/HelloBigTable/*/ public class ZKClient01 {private String connectString = "192.168.126.128:2181,192.168.126.129:2181,192.168.126.130:2181";private int senssionTimeout = 3000;private ZooKeeper zkCli = null;/*** 初始化客戶端* @ throws IOException*/@Beforepublic void unit() throws IOException {zkCli = new ZooKeeper(connectString, senssionTimeout, new Watcher() {public void process(WatchedEvent watchedEvent) {}});}/*** 創(chuàng)建節(jié)點* @ throws KeeperException* @ throws InterruptedException*/@Testpublic void createZnode() throws KeeperException, InterruptedException {String path = zkCli.create("/Wyh", "cool".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println(path);}//獲取節(jié)點 @Testpublic void getZone() throws KeeperException, InterruptedException {List<String> children = zkCli.getChildren("/", true);for (String c:children){System.out.println(c);}}//刪除節(jié)點 @Testpublic void deleteZnode() throws KeeperException, InterruptedException {zkCli.delete("/baby",-1);getZone();}//修改節(jié)點 @Testpublic void setZnode() throws KeeperException, InterruptedException {zkCli.setData("/Wyh","reallycool".getBytes(),-1);byte[] data = zkCli.getData("/Wyh", true, new Stat());System.out.println(new String(data));}}?
?
轉(zhuǎn)載于:https://www.cnblogs.com/HelloBigTable/p/10434153.html
總結
以上是生活随笔為你收集整理的Zookeeper常用命令行及API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Idea中在代码顶部添加自定义作者和时间
- 下一篇: Python——类与对象,异常处理