zookeeper入門(3)API常用函式功能與引數詳解

鍾超發表於2011-08-10

《zooker入門系列教程》:

1 - 如何在單機上實現ZooKeeper偽機群/偽叢集部署

2 - 解讀zookeeper的配置項



1. zookeeper初始化

zhandle_t *zookeeper_init(const char *host, watcher_fn fn,
int recv_timeout, const clientid_t *clientid, void *context, int flags);

功能:

建立一個控制程式碼(handle)和一個響應(response)這個控制程式碼的會話(session)。

引數:

host:zookeeper主機列表,用逗號間隔。

fn:用於監視的回撥函式。

clientid:之前建立過連線,現在要重新連的客戶端(client)ID。如果之前沒有,則為0.

context:暫時用不到,忽略。(TODO)

flags:設定為0,zookeeper開發團隊保留以後使用。


2. 監視節點是否存在

int zoo_exists(zhandle_t *zh, const char *path, int watch,
struct Stat *stat);

功能:

同步監視一個zookeeper節點(node)是否存在。

引數:

zh:zookeeper的控制程式碼,由zookeeper_init得到。

path:節點名稱,就是一個類似於檔案系統寫法的路徑。

watch:設定為0,則無作用。設定為非0時,暫時用不到,忽略。(TODO)

stat:(TODO)

返回值:ZOK,ZNONODE,ZNOAUTH,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。ZOK表示操作成功,ZNONODE表示該節點不存在,ZNOAUTH表示客戶端(client)無許可權,ZINVALIDSTATE表示存在非法的引數,後兩者暫略(TODO)。


3. 新建zookeeper節點

int zoo_create(zhandle_t *zh, const char *path, const char *value, int valuelen,
const struct ACL_vector *acl, int flags, char *path_buffer, int path_buffer_len);

功能:

建立一個同步的zookeeper節點。

引數:

zh:zookeeper的控制程式碼,由zookeeper_init得到。

path:節點名稱,就是一個類似於檔案系統寫法的路徑。

value:欲儲存到該節點的資料。如果不儲存資料,則設定為NULL。

valuelen:欲儲存的資料的長度。如果不儲存資料,則設定為-1.

acl:初始的ACL節點,ACL不能為空。比如設定為&ZOO_OPEN_ACL_UNSAFE。(TODO)

flags:一般設定為0.(TODO)

path_buffer:將由新節點填充的路徑值。可設定為NULL。(TODO)

path_buffer_len:path_buffer的長度。

返回值:ZOK,ZNONODE,ZNODEEXISTS,ZNOAUTH,ZNOCHILDRENFOREPHEMERALS,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。ZOK表示操作成功,ZNONODE表示該節點不存在,ZNODEEXISTS表示節點已經存在,ZNOAUTH表示客戶端(client)無許可權,ZNOCHILDRENFOREPHEMERALS表示不能夠建立臨時(ephemeral)節點的子節點(children),ZINVALIDSTATE表示存在非法的引數,後兩者暫略(TODO)。


4. 設定zookeeper節點

int zoo_set(zhandle_t *zh, const char *path, const char *buffer,
int buflen, int version);

功能:

向zookeeper節點寫資料。

引數:

zh:zookeeper的控制程式碼,由zookeeper_init得到。

path:節點名稱,就是一個類似於檔案系統寫法的路徑。

buffer:欲寫的資料。

buflen:欲寫的資料的長度。

version:檢查這個節點的版本是否為version。當設定為-1時,不會進行版本檢查。(TODO)


5. 獲取某節點的子節點

int zoo_wget_children(zhandle_t *zh, const char *path, watcher_fn watcher,
void* watcherCtx, struct String_vector *strings);

功能:

同步列出一個節點的所有子節點。

引數:

zh:zookeeper的控制程式碼,由zookeeper_init得到。

path:節點名稱,就是一個類似於檔案系統寫法的路徑。

watcher:若設定為非0,則zookeeper伺服器(server)會設定一個監視器,用來在節點發生改變時通知客戶端(client)。

watcherCtx:傳送給watcher作為回撥的具體使用者資料(user specific data)。

strings:用來儲存得到的子節點路徑。

返回值:ZOK,ZNONODE,ZNOAUTH,ZBADARGUMENTS,ZINVALIDSTATE,ZMARSHALLINGERROR。

相關文章