ZooKeeper C API 常用函数详解

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

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值