一、下载zookeeper的包
地址:https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.8.0/ 需要下载该目录下的两个文件

二、部署安装
1.安装jdk
2.解压下载的文件
3.需要将apache-zookeeper-3.8.0-bin目录下的lib文件夹拷贝到apache-zookeeper-3.8.0下
4.复制 zoo_sample.cfg为zoo.cfg,并修改配置文件
#时间配置的基本单位(毫秒),2秒initLimit=10 tickTime=2000 #允许从节点初始化连接到主节点的最大时长,它表示tickTime的倍数,默认20秒 initLimit=10 #允许从节点与主节点数据同步的最大时长,它表示tickTime的倍数,默认10秒 syncLimit=5 #持久化机制:事务持久化跟快照持久化 #数据存储目录和日志保存目录,如果没有指明dataLogDir,则日志也保存在这个文件中 dataDir=/tmp/zookeeper dataLogDir=/tmp/zookeeper #对客户端提供的端口 clientPort=2181 #设置admin的服务端口,默认会占用8080 admin.serverPort=8888 #单个客户端与zookeeper最大并发连接数
maxClientCnxns=60 #保存数据的快照数量,之外的将会被清除 autopurge.anapRetainCount=3 #自动触发清除任务时间间隔,小时为单位,默认为0,表示不自动清除 autopurge.purgeInterval=1
5.zookeeper的基本命令

6.启动服务
./zkServer.sh start ../conf/zoo.cfg ,启动服务时候如果保存,可以用./zkServer.sh start-foreground查看输出错误信息去排查错误

7.查看zookeeper启动的状态

8.zk的客户端连接工具
./zkCli.sh
zookeeper内部的数据模型:zk的数据是保存在节点上的,节点就是znode,多个znode组成一个树的目录结构

9.zk的客户端的命令
ZooKeeper -server host:port -client-configuration properties-file cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b|-N|-B] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b|-N|-B val path
stat [-w] path
sync path
version
whoami
(1)创建节点
create /test1
create /test1/sub1

(2)创建数据,获取数据
create /test2 abc
get /test2

(3)创建持久节点与持久序号节点
create /test3 #创建持久节点
create -s /test3 #创建持久序号节点
(4)创建临时节点,回话结束后,自动被删除,zk可以实现服务的注册与发现。
zk客户端 -> 创建连接请求 ->zk服务器
zk客户端 <- 返回session_id <-zk服务器
zk客户端 -> 持续回话,续约session_id的时间 ->zk服务器
zk客户端(回话断开) zk服务器(删除没有续约的session-id的对应的临时节点)
create -e /test5
(5)查询节点信息
cZxid 创建节点的事务ID
ctime 节点创建的时间
mZxid 修改节点的事务ID
mtime 节点最近修改的时间
pZxid 添加和删除节点的事务ID
cversion
dataVersion
aclVersion 此节点的权限版本
ephemeralOwner 如果当前节点是临时节点,该值是当前所有者的session_id,如果不是临时节点该值为0
dataLength = 0
numChildren = 0
(6)创建容器节点
create -c /mycontainer #创建的容器节点,在子节点被删除之后,60s后该容器节点会被删除
create /mycontainer/a
create /mycontainer/b
delete /mycontainer/a
delete /mycontainer/b
10.zk的数据持久化
- 事务日志
- 数据快照
存放在配置文件zoo.cfg中dataDir的值的路径下
恢复:先通过快照文件数据到内存中,再用日志文件中的数据作增量恢复,这样的恢复速度会更快
迁移和恢复参考:https://blog.51cto.com/tianshili/2072339?ivk_sa=1024320u
浙公网安备 33010602011771号