Zookeeper-------原生API 操作

Zookeeper原生API 操作

目錄

Zookeeper原生API 操作

1、操作前的準備工作

2、Zookeeper API詳解

2.1 構造器摘要

2.2 創建節點

2.3 刪除結點

2.4 修改結點的值

2.5 獲取結點的值,和設置watch事件

2.6 獲取子節點信息,和設置watch事件

2.7 是否存在結點,和設置watch事件

2.8 獲取節點權限和設置節點權限


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構造器摘要

ZooKeeper(String host, int sessionTimeout, Watcher watcher)

    host:服務器ip和端口號; sessionTimeout超時時間,心跳收不到了,那就超時; watcher:監聽事件
          作用:要創建一個client(ZooKeeper)對象,應用程序需要傳遞一個字符串,其中包含一個逗號分隔的host:port對列表,每個對與ZooKeeper服務器相對應。

ZooKeeper(String host, int sessionTimeout, Watcher watcher, long sessionId, byte[] sessionPasswd)

    sessionId:會話的id;  sessionPasswd:會話密碼 當會話丟失後,可以依據 sessionId 和 sessionPasswd 重新獲取會話
          要創建一個client(ZooKeeper)對象,應用程序需要傳遞一個字符串,其中包含一個逗號分隔的host:port對列表,每個對與ZooKeeper服務器相對應

2.2 創建節點

String

create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

          path:創建結點的路徑   data:結點的值 ; acl:結點的權限列表;createMode:結點的類型


          作用:創建具有給定路徑的節點。

 void

create(String path, byte[] data, List<ACL> acl, CreateMode createMode, AsyncCallback.StringCallback cb, Object ctx)
          cb :回調函數,實現了StringCallback接口    ;   ctx:傳入的參數

 

          作用:創建的異步版本。

注意:

createMode:節點類型, 是一個枚舉
*    PERSISTENT:持久節點
*    PERSISTENT_SEQUENTIAL:持久順序節點
*    EPHEMERAL:臨時節點
*    EPHEMERAL_SEQUENTIAL:臨時順序節點
控制權限策略
*    Ids.OPEN_ACL_UNSAFE --> world:anyone:cdrwa
*    CREATOR_ALL_ACL --> auth:user:password:cdrwa

2.3 刪除結點

 void

delete(String path, int version)

   path:刪除結點路徑; version:刪除結點的版本號


        作用: 刪除具有給定路徑的節點。

 void

delete(String path, int version, AsyncCallback.VoidCallback cb, Object ctx)

   cb:回調函數,實現了VoidCallback接口;  ctx:傳入的參數   


        作用:刪除的異步版本。

2.4 修改結點的值

Stat

(結點狀態值)

setData(String path, byte[] data, int version)

          path:修改結點路徑; data:修改後的新值;version:版本號
          作用:如果存在這樣的節點並且給定版本與該節點的版本匹配(如果給定版本爲-1,則它與任何節點的版本都匹配),請爲給定路徑的節點設置數據。

  void

setData(String path, byte[] data, int version, AsyncCallback.StatCallback cb, Object ctx)

          cb:回調函數,實現了StatCallback接口; ctx:傳入的參數
          作用:setData的異步版本。

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

close()
          關閉此客戶端對象。

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章