Zookeeper原生API 操作
目錄
1、操作前的準備工作
在idea下創建一個maven項目,然後引入以下依賴,並使用centos啓動zookeeper服務。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
2、Zookeeper API詳解
2.1構造器摘要
|
|
2.2 創建節點
String |
path:創建結點的路徑 data:結點的值 ; acl:結點的權限列表;createMode:結點的類型
|
void |
作用:創建的異步版本。 |
注意:
createMode:節點類型, 是一個枚舉
* PERSISTENT:持久節點
* PERSISTENT_SEQUENTIAL:持久順序節點
* EPHEMERAL:臨時節點
* EPHEMERAL_SEQUENTIAL:臨時順序節點
控制權限策略
* Ids.OPEN_ACL_UNSAFE --> world:anyone:cdrwa
* CREATOR_ALL_ACL --> auth:user:password:cdrwa
2.3 刪除結點
void |
|
void |
|
2.4 修改結點的值
|
path:修改結點路徑; data:修改後的新值;version:版本號 |
void |
cb:回調函數,實現了StatCallback接口; ctx:傳入的參數 |
2.5 獲取結點的值,和設置watch事件
void |
getData(String path, boolean watch, AsyncCallback.DataCallback cb, Object ctx) getData的異步版本。 |
byte[] |
getData(String path, boolean watch, Stat stat) 返回給定路徑的節點的數據和狀態。 |
void |
getData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx) getData的異步版本。 |
byte[] |
getData(String path, Watcher watcher, Stat stat) 返回給定路徑的節點的數據和狀態。 |
2.6 獲取子節點信息,和設置watch事件
List<String> |
getChildren(String path, boolean watch) 返回給定路徑的節點的子級列表。 |
void |
getChildren(String path, boolean watch, AsyncCallback.ChildrenCallback cb, Object ctx) getChildren的異步版本。 |
List<String> |
getChildren(String path, Watcher watcher) 返回給定路徑的節點的子級列表。 |
void |
getChildren(String path, Watcher watcher, AsyncCallback.ChildrenCallback cb, Object ctx) getChildren的異步版本。 |
2.7 是否存在結點,和設置watch事件
Stat |
exists(String path, boolean watch) 返回給定路徑的節點的統計信息。 |
void |
exists(String path, boolean watch, AsyncCallback.StatCallback cb, Object ctx) 存在異步版本。 |
Stat |
exists(String path, Watcher watcher) 返回給定路徑的節點的統計信息。 |
void |
exists(String path, Watcher watcher, AsyncCallback.StatCallback cb, Object ctx) 存在異步版本。 |
2.8 獲取節點權限和設置節點權限
List<ACL> |
getACL(String path, Stat stat) 返回給定路徑的節點的ACL和狀態。 |
void |
getACL(String path, Stat stat, AsyncCallback.ACLCallback cb, Object ctx) getACL的異步版本。 |
Stat |
setACL(String path, List<ACL> acl, int version) 如果存在這樣的節點並且給定版本與該節點的版本匹配,請爲該路徑的節點設置ACL。 |
void |
setACL(String path, List<ACL> acl, int version, AsyncCallback.StatCallback cb, Object ctx) setACL的異步版本。 |
2.9 其他方法
void |
addAuthInfo(String scheme, byte[] auth) |
void |
|
long |
getSessionId() 該ZooKeeper客戶端實例的會話ID。 |
byte[] |
getSessionPasswd() 該ZooKeeper客戶端實例的會話密碼。 |
ZooKeeper.States |
getState() |
void |
register(Watcher watcher) |
void |
sync(String path, AsyncCallback.VoidCallback cb, Object ctx) 異步同步。 |
static void |
validatePath(String path) 驗證提供的znode路徑字符串 |
最後,具體代碼示例可以參考:
https://blog.51cto.com/zero01/2108333
https://blog.51cto.com/zero01/2108483