? 10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
? 11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。
14
第6章 zookeeper使用常见问题
? Watches通知是一次性的,触发后必须重复注册。
? 调用zookeeper_init函数时,若返回一个非空句柄zhandle_t *zh,则认为初始化成功,这样可能
会导致后续操作失败。因为zookeeper_init创建与ZooKeeper服务端通信的句柄以及对应于此句柄的会话,而会话的创建是一个异步的过程,仅当会话建立成功,zookeeper_init才返回一个可用句柄。可以通过zoo_state(zh)判断状态值是否为ZOO_CONNECTED_STATE来确定初始化是否成功。
? maxSessionTimeout回话超时时间不宜设置太短,容易使zookeeper操作超时。
15
第7章 附录
7.1 zookeeper初始化、销毁函数
ZOOAPI zhandle_t *zookeeper_init(const char *host, watcher_fn fn, int recv_timeout, const clientid_t * clientid, void *context, int flags);
ZOOAPI int zookeeper_close(zhandle_t * zh);
7.2 zookeeper辅助函数
// 设置日志等级、日志流
ZOOAPI void zoo_set_debug_level(ZooLogLevel logLevel);
ZOOAPI void zoo_set_log_stream(FILE * logStream);
ZOOAPI const clientid_t *zoo_client_id(zhandle_t * zh);
ZOOAPI int zoo_recv_timeout(zhandle_t * zh);
ZOOAPI const void *zoo_get_context(zhandle_t * zh);
ZOOAPI void zoo_set_context(zhandle_t * zh, void *context);
ZOOAPI watcher_fn zoo_set_watcher(zhandle_t * zh, watcher_fn newFn);
ZOOAPI struct sockaddr *zookeeper_get_connected_host(zhandle_t * zh, struct sockaddr* addr, socklen_t * addr_len);
ZOOAPI int zookeeper_interest(zhandle_t * zh, int *fd, int *interest, struct timeval *tv);
ZOOAPI int zookeeper_process(zhandle_t * zh, int events);
ZOOAPI int zoo_state(zhandle_t * zh);
16
ZOOAPI const char *zerror(int c);
ZOOAPI int is_unrecoverable(zhandle_t * zh);
ZOOAPI void zoo_deterministic_conn_order(int yesOrNo);
7.3 zookeeper同步接口
ZOOAPI int zoo_add_auth(zhandle_t * zh, const char *scheme, const char *cert, int certLen,
void_completion_t completion, const void *data);
ZOOAPI 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);
ZOOAPI int zoo_delete(zhandle_t * zh, const char *path, int version);
ZOOAPI int zoo_exists(zhandle_t * zh, const char *path, int watch, struct Stat *stat);
ZOOAPI int zoo_wexists(zhandle_t * zh, const char *path, watcher_fn watcher, void *watcherCtx, struct Stat *stat);
ZOOAPI int zoo_get(zhandle_t * zh, const char *path, int watch, char *buffer, int *buffer_len, struct Stat *stat);
ZOOAPI int zoo_wget(zhandle_t * zh, const char *path, watcher_fn watcher, void *watcherCtx, char *buffer, int *buffer_len, struct Stat *stat);
ZOOAPI int zoo_set(zhandle_t * zh, const char *path, const char *buffer, int buflen, int version);
ZOOAPI int zoo_set2(zhandle_t * zh, const char *path, const char *buffer, int buflen, int version, struct Stat *stat);
17
相关推荐: