zookeeper的java api操作

zookeeper的java api操作
創建會話:
Zookeeper(String connectString,int sessionTimeout,Watcher watcher)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,boolean canBeReadOnly)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd)
Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd,boolean canBeReadOnly)
參數說明:
connectString -- host:port[,host:port][basePath] 指定的服務器列表,多個host:port之間用英文逗號分隔。還可以可選擇的指定一個基路徑,如果指定了一個基路徑,則所有後續操作基於這個及路徑進行。
sessionTimeOut -- 會話超時時間。以毫秒爲單位。客戶端和服務器端之間的連接通過心跳包進行維繫,如果心跳包超過這個指定時間則認爲會話超時失效。
watcher -- 指定默認觀察者。如果爲null表示不需要觀察者。
canBeReadOnly -- 是否支持只讀服務。只當一個服務器失去過半連接後不能再進行寫入操作時,是否繼續支持讀取操作。略
sessionId、SessionPassword -- 會話編號 會話密碼,用來實現會話恢復。
 
**注意,整個創建會話的過程是異步的,構造方法會在初始化連接後即返回,並不代表真正建立好了一個會話,此時會話處於"CONNECTING"狀態。
**當會話真正創建起來後,服務器會發送事件通知給客戶端,只有客戶端獲取到這個通知後,會話才真正建立。
 
代碼:
//TODO
 
創建節點:
String create(final String path,byte data[],List<ACL> acl,CreateMode createMode);//同步方式創建
void create(final String path,byte data[],List<ACL> acl,CreateMode createMode,StringCallback cb,Object ctx);//異步方式創建
參數說明:
path 要創建的數據節點的路徑
data [] 節點創建時初始數據內容
acl 節點acl安全策略
createMode 創建模式
PERSISTENT 持久
PERSISTENT_SEQUENTIAL 持久順序
EPHEMERAL 臨時
EPHEMERAL_SEQUENTIAL 臨時順序
cb 回調接口
ctx 傳遞對象,用來在回調方法中使用 通常是個上下文對象
 
**注意:不支持遞歸創建,即不能在無父節點的情況下創建出子節點
**嘗試創建已經存在的節點將失敗並拋出異常
**在不需要進行任何權限控制時,只需傳入Ids.OPEN_ACL_UNSAFE即可
 
代碼:
//TODO
 
刪除節點:
public void delete(final String path,int version)
public void delete(final String path,int version,VoidCallback cb,Object ctx)
 
**注意:無法刪除存在子節點的節點,即如果要刪除一個節點,必須要先刪除其所有子節點
 
讀取數據:
getChildren
//同步方式
List<String> getChildren(final String path,Watcher watcher)
List<String> getChildren(String path,boolean watch)
List<String> getChildren(final String path,Watcher watcher,Stat stat)
List<String> getChildren(String path,boolean watch,Stat stat)
//異步方式
void getChildred(final String path,Watcher watcher,ChildrenCallback cb,Object ctx)
void getChildred(String path,boolean watch,ChildrednCallback cb,Object ctx)
void getChildred(final String path,Watcher watcher,Children2Callback cb,Object ctx)
void getChildred(String path,boolean watch,Children2Callback cb,Object ctx)
 
參數說明:
path 要創建的數據節點的路徑
watcher 觀察者,一旦在本子節點獲取之後,子節點列表發生變更,服務器端向客戶端發送消息,觸發watcher中的回調。注意,僅僅是通知而已,如果需要新的子節點列表,需要自己再次去獲取。允許傳入null。
watch 表明是否需要註冊一個Watcher。爲true則通知默認到默認watcher,如果爲false則不使用
cb 回掉函數
ctx 上下文對象
stat 指定數據節點的狀態信息。用法是在接口中傳入一箇舊的stat變量,該stat變量會在方法執行過程中,被來自服務端響應的新stat對象替換。
 
getData
//同步方式
byte [] getData(final String path,Watcher watcher, Stat stat)
byte [] getData(String path,boolean watch, Stat stat)
//異步方式
void getData(final String path,Watcher watcher, DataCallback cb,Object ctx)
void getData(String path,boolean watch, DataCallback cb,Object ctx)
 
*可以通過註冊Watcher進行監聽,一旦該節點數據被更新會通知客戶端
 
更新數據
//同步方式
Stat setData(final String path,byte data[],int version)//version可以傳入-1,表明要基於最新版本進行更新操作
//異步方式
void setData(final String path,byte data[],int version,StatCallback cb,Object ctx)
 
檢查節點是否存在
//同步方式
public Stat exists(final String path,Watcher watcher)
public Stat exists(String path,boolean watch)
//異步方式
public Stat exists(final String path,Watcher watcher,StatCallback cb,Object ctx)
public Stat exists(String path,boolean watch,StatCallback cb,Object ctx)
 
*可以通過註冊Watcher進行監聽,一旦節點被創建、刪除、數據被更新都會通知客戶端
 
zookeeper權限控制:
addAuthInfo(String schema,byte [] auth)
參數說明;
schema 權限模式,可以是world auth digest ip super,我們使用digest
byte[] auth 權限控制標識,由"foo:123".getByte()方式組成,後續操作只有auth值相同纔可以進行
 
**注意刪除操作,如果在增加節點時指定了權限,則對於刪除操作,認爲權限加在了子節點上,刪除當前結點不需要權限,刪除子節點需要權限。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章