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;

}



 

你可能感兴趣的:(Hello world)