1、 配置安装
这里介绍的是windows下单机的安装教程,集群的安装方式大同小异,大家可以自行百度一下。
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
我下载的是3.5.9 版本, windows 下最好下载编译过的源码版本,即bin.tar.gz,
我下载的是 apache-zookeeper-3.5.9-bin.tar.gz
解压后有conf 和bin等目录,conf路径下将zoo_sample.cfg 另存为zoo.cfg,并修改zoo.cfg中的三个参数:
admin.serverPort=8030
dataDir=D:\\apache-zookeeper-3.5.9-bin\\data
dataLogDir=D:\\apache-zookeeper-3.5.9-bin\\log
clientPort=2183
其中,admin.serverPort是zooKeeper 服务器启动占用的端口,一般默认为8080,为避免发生端口被占用的情况,可根据需要自行配置,
dataDir是存放运行数据的目录,dataLogDir是存放日志目录,记得路径中要使用//来转义为单斜杠,clientPort是客户端连zookeeper使用的
端口,默认为2181,但是我本机发现2181端口已被占用,因此自行修改为了2183, 各位可根据自己实际情况配置。
然后, 在控制台bin目录下中输入zkServer.cmd即可启动zookeeper:
D:\apache-zookeeper-3.5.9-bin\bin>zkServer.cmd
zkServer.sh stop 即可停止zookeeper服务。
常用命令如下:
启动ZK服务 | bin/zkServer.sh start |
查看ZK服务状态 | bin/zkServer.sh status |
停止ZK服务 | bin/zkServer.sh stop |
重启ZK服务 | bin/zkServer.sh restart |
连接服务器 | zkCli.sh -server 127.0.0.1:2181 |
如遇到问题,可以在logs目录下查看日志信息。
客户端连接Zookeeper:
windows 下, 直接运行 zkCli.cmd即可,Linux 下执行 ./zkCli.sh -timeout 0 -r -server ip:port
客户端下常见命令:
ls:列出某一节点下的子节点信息
ls2:列出当前节点的子节点,同时列出节点状态
stat:查看节点的状态信息
在zookeeper中,每一次对节点的写操作都认为是一次事务,每一个事务,系统都会分配一个唯一的事务ID。
czxid:节点被创建的事务ID
ctime: 创建时间
mzxid: 最后一次被更新的事务ID
mtime: 修改时间
pzxid:子节点列表最后一次被更新的事务ID
cversion:子节点的版本号
dataversion:数据版本号
aclversion:权限版本号
ephemeralOwner:用于临时节点,代表临时节点的事务ID,如果为持久节点则为0
dataLength:节点存储的数据的长度
numChildren:当前节点的子节点个数
get:获取当前节点存储的数据内容
如:get /zk
create:创建节点
-s:顺序节点
-e:临时节点
如:create /zk "myData"
set:修改节点数据,可携带版本号
如:set /zk "myData"
delete:删除节点,只能删除没有子节点的节点
如:delete /zk
rmr:递归删除节点(含子节点)
如:rmr /zk
setquota:设置配额
给节点限制值,比如限制子节点个数、节点数据的长度(当创建节点超出配额时,zookeeper不会抛出异常,会在zookeeper.out记录警告信息)
-n:限制子节点个数
-b:限制值的长度
listquota:查看配额,以及节点的配额状态
delquota:删除配额
close:关闭当前连接
quit:关闭客户端
history:查看历史执行指令
redo:重复执行指令
2、基本原理
简要地说,Zookeeper 基于观察者模式,观察各个服务器的状态,如果某一台服务器挂掉了,客户端可以切换到其他服务器请求访问,可以将zookeeper想象为监控器,
监控器什么都不做,但是记录了所有事情发生的记过。
对于服务器而言,服务器定时将自己的信息注册(可以理解为写入)到zookeeper集群,客户端定时的读取zookeeper集群上的注册信息,如果有服务器下线,客户端能够实时感知,
从这个角度上来说,zookeeper好像是“一本记账薄”,即 文件系统+通知机制 。