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值相同才能夠進行
 
**注意刪除操做,若是在增長節點時指定了權限,則對於刪除操做,認爲權限加在了子節點上,刪除當前結點不須要權限,刪除子節點須要權限。
相關文章
相關標籤/搜索