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字节数组,如果存储对象,需要自己转换对象生成字节数组
|