Zookeeper Hello World

1.Zookeeper的安装使用

在官网上下载zk的安装包(http://labs.renren.com/apache-mirror/zookeeper/),解压后cd到zk的目录下。

单机版安装方法:

在conf目录下创建一个 “zoo.cfg”的默认配置文件,稍后我们将用到它,编辑其内容为:

tickTime=2000
dataDir=~/src/zktest
clientPort=2181

zk的存储结构类似于文件系统,分为很多节点,每个节点会有值和一些权限控制信息。
2.启动service和client

service:bin/zkServer.sh
start

client:bin/zkCli.sh  -server 127.0.0.1:2181

启动之后可以用help命令察看命令列表

zk的存储结构类似于

3.编写客户端的一个HelloWorld

3.1建立节点信息:

        struct ACL acl[] =
{
{ZOO_PERM_ALL,{"world","anyone"}}
};
int demo_acl_size1 = sizeof(acl)/sizeof(acl[0]);
struct ACL_vector acl_vector = { demo_acl_size1, acl };
int rc = zoo_create(this->zh, “/test”, "test_value", 10, &acl_vector, 0, 0, 0);
if (rc !=ZOK) {
std::cerr<< zerror(rc) <<std::endl;
exit(-1);
}

在zk的命令行客户端中 输入命令 get /test 就会发现值“test_value ”已存在于节点 /test 下。

3.1向节点中赋值

void zk_set(const char *path, const char *value){
int len = strlen(value);
Stat stat;
int rc = zoo_set2(this->zh, path, value, len, -1, &stat);
if (rc != ZOK) {
std::cerr << zerror(rc) << std::endl;
}
//std::cout<<"Set Value:"<<value<<" for path:"<<path<<" succeed!"<<std::endl;
}

3.2取得节点中的值

char *zk_get(const char *path){

	int buf_len = sizeof(this->buf);
struct Stat stat;
//zhandle_t *zh1 = zookeeper_init("127.0.0.1:2181", 0, 10000, 0, 0, 0);
int rc = zoo_get(zh, path, 0, this->buf, &buf_len, &stat);
if (rc != ZOK){
std::cerr<< zerror(rc) <<std::endl;
exit(-1);
}
std::cout<<strlen(buf)<<std::endl;
return this->buf;
}
上一篇:Dancing Stars on Me---hdu5533(判断是否为正多边形)


下一篇:【转】新手该如何学python怎么学好python?