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;
}



原文地址:https://www.cnblogs.com/yancey/p/3371363.html