qq591577286 发表于 2015-9-6 12:31:02

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

  
页: [1]
查看完整版本: Zookeeper Hello World