1:注意:
1:与ZooKeeper进行任何操作之前,我们首先需要一个zhandle_t句柄。
2:函数返回值类型:
返回类型 | 含义 |
ZOK | 正常返回 |
ZSYSTEMERROR | 系统或服务器端错误(System and server-side errors),服务器不会抛出该错误,该错误也只是用来标识错误范围的,即大于该错误值,且小于 ZAPIERROR 都是系统错误。 |
ZRUNTIMEINCONSISTENCY | 运行时非一致性错误。 |
ZDATAINCONSISTENCY | 数据非一致性错误。 |
ZCONNECTIONLOSS | Zookeeper 客户端与服务器端失去连接 |
ZMARSHALLINGERROR | 在 marshalling 和 unmarshalling 数据时出现错误(Error while marshalling or unmarshalling data) |
ZUNIMPLEMENTED | 该操作未实现(Operation is unimplemented) |
ZOPERATIONTIMEOUT | 该操作超时(Operation timeout) |
ZBADARGUMENTS | 非法参数错误(Invalid arguments) |
ZINVALIDSTATE | 非法句柄状态(Invliad zhandle state) |
ZAPIERROR | API 错误(API errors),服务器不会抛出该错误,该错误也只是用来标识错误范围的,错误值大于该值的标识 API 错误,而小于该值的标识 ZSYSTEMERROR。 |
ZNONODE | 节点不存在(Node does not exist) |
ZNOAUTH | 没有经过授权(Not authenticated) |
ZBADVERSION | 版本冲突(Version conflict) |
ZNOCHILDRENFOREPHEMERALS | 临时节点不能拥有子节点(Ephemeral nodes may not have children) |
ZNODEEXISTS | 节点已经存在(The node already exists) |
ZNOTEMPTY | 该节点具有自身的子节点(The node has children) |
ZSESSIONEXPIRED | 会话过期(The session has been expired by the server) |
ZINVALIDCALLBACK | 非法的回调函数(Invalid callback specified) |
ZINVALIDACL | 非法的ACL(Invalid ACL specified) |
ZAUTHFAILED | 客户端授权失败(Client authentication failed) |
ZCLOSING | Zookeeper 连接关闭(ZooKeeper is closing) |
ZNOTHING | 并非错误,客户端不需要处理服务器的响应(not error, no server responses to process) |
ZSESSIONMOVED | 会话转移至其他服务器,所以操作被忽略(session moved to another server, so operation is ignored) |
二:函数
1:zookeeper_init
函数 | zhandle_t* zookeeper_init(const char* host,watcher_fn fn,int recv_timeout,const clientid_t* clientid,void* context,int flags); |
功能 | zookeeper_init函数来获取zhandle_t句柄,用于后续zookeeper操作 |
参数 | const char* host:包含ZooKeeper服务集群的主机地址的字符串,地址格式为host:port,每组地址以逗号分隔。 watcher_fn fn:用于处理事件的监视点函数 int recv_timeout:会话过期时间,以毫秒为单位 const clientid_t* clientid:之前已建立的一个会话的客户端ID,用于客户端重新连接,如果没有则为0 void* context:返回的zkhandle_t句柄所使用的上下文对象 int flags:该参数暂时没有使用,因此设置为0即可 |
返回值 | 判断返回zhandle_t的类型,为NULL,则获取失败; 否则,成功; |
备注 |
2:zookeeper_close
函数 | int zookeeper_close(zhandle_t * zh); |
功能 | 关闭句柄,释放资源。调用函数后,会话将不可用,函数返回前会将未发送完毕的请求发送完,所以可能会引起阻塞。 |
参数 | zhandle_t * zh:zookeeper操作句柄 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
3:zoo_set_debug_level
函数 | void zoo_set_debug_level(ZooLogLevel logLevel); |
功能 | 设置zookeeper打印等级 |
参数 | ZooLogLevel logLevel: ZOO_LOG_LEVEL_ERROR:错误信息 ZOO_LOG_LEVEL_WARN:警告信息 ZOO_LOG_LEVEL_INFO:重要输出信息 ZOO_LOG_LEVEL_DEBUG:打印信息 |
返回值 | 无返回值 |
备注 |
4:zoo_get_children2
函数 | int zoo_get_children2(zhandle_t * zh, const char *path,int watch, struct String_vector *strings,struct Stat *stat); |
功能 | 同步获取子节点列表并返回当前节点的stat信息 |
参数 | zhandle_t * zh:zookeeper操作句柄 const char *path:节点的路径 int watch:设置为0,则无作用。若设置为非0,则zookeeper服务器(server)会设置一个监视器,用来在节点发生改变时通知客户端(client)。 struct String_vector *strings:用来保存得到的子节点路径 struct Stat *stat:节点的stat信息 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
5:zoo_exists
函数 | int zoo_exists(zhandle_t * zh, const char *path, int watch,struct Stat *stat); |
功能 | 判断节点是否存在 |
参数 | zhandle_t * zh:zookeeper操作句柄 const char *path:节点的路径名称 int watch:设置为0,则无作用。若设置为非0,则zookeeper服务器(server)会设置一个监视器,用来在节点发生改变时通知客户端(client)。 struct Stat *stat:节点的stat信息 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
6:zoo_get
函数 | int zoo_get(zhandle_t * zh, const char *path, int watch,char *buffer, int *buffer_len, struct Stat *stat); |
功能 | 获取节点数据 |
参数 | zhandle_t * zh:zookeeper操作句柄 const char *path:节点的路径名称 int watch:设置为0,则无作用。若设置为非0,则zookeeper服务器(server)会设置一个监视器,用来在节点发生改变时通知客户端(client)。 char *buffer:读数据存放位置 int *buffer_len:欲读的数据的长度 struct Stat *stat:节点的stat信息 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
7:zoo_set
函数 | int zoo_set(zhandle_t * zh, const char *path,const char *buffer, int buflen, int version); |
功能 | 设置节点数据 |
参数 | zhandle_t * zh:zookeeper的句柄,由zookeeper_init得到。 const char *path:节点的路径名称 const char *buffer:欲写的数据 int buflen:欲写的数据的长度。 int version:检查这个节点的版本是否为version。当设置为-1时,不会进行版本检查 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
8:zoo_create
函数 | 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节点。 |
参数 | zhandle_t * zh:zookeeper的句柄,由zookeeper_init得到。 const char *path:节点的路径名称 const char *value:欲存储到该节点的数据。如果不存储数据,则设置为NULL。 int valuelen:欲存储的数据的长度。如果不存储数据,则设置为-1. const struct ACL_vector *acl:初始的ACL节点,ACL不能为空。比如设置为&ZOO_OPEN_ACL_UNSAFE。 int flags:一般设置为0 char *path_buffer:将由新节点填充的路径值 int path_buffer_len:path_buffer的长度。 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
9:zoo_delete
函数 | int zoo_delete(zhandle_t * zh, const char *path, int version); |
功能 | 删除节点 |
参数 | zhandle_t * zh:zookeeper的句柄,由zookeeper_init得到。 int version:检查这个节点的版本是否为version。当设置为-1时,不会进行版本检查 |
返回值 | ZOK:表示操作成功 否则:表示操作有错,详细错误查看返回类型 |
备注 |
10:demo实例
demo实例请看下一篇内容,链接如下:
https://blog.csdn.net/xiaoliantongtong/article/details/99989021