一、下载Zookeeper并解压
http://archive.apache.org/dist/zookeeper/
二、修改配置文件
进入zookeeper的conf目录下
默认参数说明:
tickTime :zk的时间单元,zk中所有时间以这个时间为基础进行整数配置。
initLimit:follower启动时,从leader同步数据,leader允许follower完成同步工作的时间限制。通常不用在意,当使用zk集群时,数据量变大,则适当调大。
syncLimit:leader负责与zk集群的所有机器进行通信,例如利用心跳检测机制检测follower是否存活,当leader发出心跳包在syncLimit时间后,没有收到响应,则表示当前的follower已经不在线,此参数不宜过大。
dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这个目录下。
dataLogDir:事务日志输出目录,最好给事务日志的输出配置单独磁盘或者挂载点,这将提高zk性能。
clientPort:客户端连接server的端口,默认2181
三、启动配置
进入zookeeper的bin目录下
1、zkEnv 设置Zookeeper的环境变量(例如:指定jdk的路径)
2、zkCleanup 清理Zookeeper历史数据,包括事务日志文件和快照数据文件
3、zkServer Zookeeper服务器的启动、停止、和重启脚本
(启动报错,可以暂停窗口,查看报错信息,在zkServer脚本最下面添加pause)
4、zkCli Zookeeper的一个简易客户端
四、服务端的操作
1、运行服务
zkServer.cmd start(使用jps查看是否存在QuorumPeerMain进程,存在表示已启动)
2、停止服务
zkServer.cmd stop(使用jps查看是否存在QuorumPeerMain进程,不存在表示已销毁)
五、客户端的操作
1、打开客服端
zkCli.cmd 连接本地服务端
zkCli.sh -server ip:port 连接指定服务端 (zk的bin目录下输入命令)
2、help 查看操作命令
3、创建节点
create [-s] [-e] path data acl -s:顺序节点 -e:临时节点 不指定表示持久节点 acl:权限控制
3.1.创建顺序节点 (名称后面带有数字标识)
create -s /mynode mydata (sequence)
3.2.创建临时节点 (客户端会话结束,自动删除)
create -e /mynode mydata
3.3.创建永久节点
create /mynode mydata
4、读取节点
ls path [watch]
get path [watch]
ls2 path [watch]
4.1.ls / 获取根节点下所有子节点
ls /mynode 获取mynode节点下所有的子节点
4.2 get/ 获取根节点数据内容和属性信息
get /mynode 获取mynode节点的数据内容和属性信息
4.3.ls2 / 获取根节点下所有子节点和属性信息
5、更新节点内容
set path data [version]
set /mynode newdata
6、删除节点
detele path [version]
detele /mynode
(如果有子节点,则需要先删除子节点,然后删除父节点)
六、客户端常见问题
packet len* is out of range
创建了与server的连接后,要对某个节点进行读写操作,为了提高QPS,先判断该节点数据量是否超过默认值4096*1024(4M)或者自定义的jute.maxbuffer值,如果是,则抛出异常packet len* is out of range。
解决方案:
修改zkClid.cmd脚本文件,添加变量:"-Djute.maxbuffer=40960000000000",此值请自定义,设置过大,会影响QPS。