1解压

tar -zxvf zookeeper-3.4.10.tar.gz

2 修改配置文件

进入解压后的目录中,进入conf目录,打开zoo_sample.cfg。需要修改的是里面的datadir,zk节点上的数据最终就是存到这个目录中的。我们可以自定义这个目录。
如:将其修改成:(在解压后的目录中新建一个data目录)
dataDir=/home/ubuntu/tool/zookeeper-3.4.10/data

3 zk也是cs模型

在zoo_sample.cfg中可以看到,他默认工作在2181端口。

4 使用

zk是免安装就能用的。
在bin目录下有 zkServer.sh和zkCli.sh两个脚本文件,执行就就分别启动了zk的服务端,和客户端。

服务端的简单使用:
zkServer.sh的执行需要带参数:
在这里插入图片描述
start参数是后台运行,start-foreground是前台运行。stop是停止。

client的简单使用:
客户端的常用命令有,get、ls、create、set、delete

1)启动客户端后,执行

ls /

就能看到zk的节点。zk可以看做是一个类似于linux的文件系统。
zk的目录组织如下:
在这里插入图片描述
3)执行get,可以查看某个节点的内容:
在这里插入图片描述
注意get得到的节点信息的几个字段:

  • 第一行是,节点所含的数据
  • numChildren字段,此节点的孩子节点个数。
  • datalength字段,该节点的数据量
  • ephemeralOwner字段,该节点是临时的还是永久的。0代表永久性的

4)create,是创建节点
下面的命令是在创建一个节点/sl,节点数据是20:
在这里插入图片描述
需要注意的是,创建一个节点,他的父节点必须存在(sl2不存在,所以创建失败):
在这里插入图片描述

5)set,修改节点的数据
在这里插入图片描述
6)delete,删除节点
当该节点有子节点的时候,不能删除。

5 zk的原生开发API(C/C++接口)

需要安装开发包。
进入上面解压目录src/c下面,zookeeper已经提供了原生的C/C++和Java API开发接口,需要通过源码
编译生成,过程如下:
~/package/zookeeper-3.4.10/src/c$ sudo ./configure
~/package/zookeeper-3.4.10/src/c$ sudo make
~/package/zookeeper-3.4.10/src/c$ sudo make install

(就安装在了usr/local/include和usr/local/lib中)
主要关注zookeeper怎么管理节点,zk-c API怎么创建节点,获取节点,删除节点以及watcher机制的API编程。

原生ZkClient API存在的问题:
Zookeeper原生提供了C和Java的客户端编程接口,但是使用起来相对复杂,几个弱点:
1.不会自动发送心跳消息 <==== 错误,源码上会在1/3的Timeout时间发送ping心跳消息
2.设置监听watcher只能是一次性的,每次触发后需要重复设置
3.znode节点只存储简单的byte字节数组,如果存储对象,需要自己转换对象生成字节数组

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐