一.ZK简述html
Zookeeper,它是一个分布式程序的协调服务,它主要是用来解决分布式应用中的一些数据管理问题,好比集群管理,分布式应用配置,分布式锁,服务注册/发现等等。java
它是一个相似于文件系统的树状结构。每一个目录被称为znode,能够删除目录,添加子目录这些操做,不一样的是每一个znode上面都是存储数据的,以下图:node
客户端能够监听这些目录节点,当结点数据发生改变,节点被删除,增长子节点时,zk会通知客户端。以此来实现不少分布式数据管理的操做。好比咱们把服务的一些配置数据放在某个节点上面,全部的该服务都监听这个节点,一旦节点数据(配置)发生变化,全部的该服务都会收到通知,而后各自更新配置,就不用每一个服务都手动去更新配置了。apache
ZK的节点有四种类型的:windows
持久节点(PERSISTENT):客户端与ZK断开链接以后,节点依旧存在并发
持久序号节点(PERSISTENT_SEQUENTIAL):同持久节点,只是ZK会给该结点进行顺序编号分布式
临时节点(EPHEMERAL):客户端与ZK断开链接以后,节点会被删除spa
临时序号节点(EPHEMERAL_SEQUENTIAL):同临时节点,只是ZK会给该结点进行顺序编号3d
2、安装和配置htm
简单有个认识以后,安装来体验一下:
ZK是java开发的,因此先要有JDK
https://zookeeper.apache.org/releases.html#download
下载解压这个就赘述了
解压以后的/conf目录下面有默认的配置文件zoo_sample.cfg
重命名或者复制一份出来:cp zoo_sample.cfg zoo.cfg
而后去解压后的bin目录下面,执行zkServer.sh脚本 默认会使用zoo.cfg配置文件;或者指定配置文件启动:./zkServer.sh start ../conf/zoo.cfg 若是是windows环境那么就执行cmd的脚本就能够了。
至此zk服务就启动了,默认的端口号2181.
如今咱们再回来看看zk的一些配置信息(zoo.cfg文件):
tickTime=2000 zookeeper时间配置中的基本单位 (毫秒)
initLimit=10 容许follower初始化链接到leader最大时长,它表示tickTime时间倍数 即:initLimit*tickTime
syncLimit=5 容许follower与leader数据同步最大时长,它表示tickTime时间倍数
dataDir=/tmp/zookeeper 数据存储目录
clientPort=2181 对客户端提供的端口号
maxClientCnxns=60 单个客户端与zookeeper最大并发链接数
autopurge.snapRetainCount=3 保存的数据快照数量,以外的将会被清除
autopurge.purgeInterval=1 自动触发清除快照任务时间间隔(超过autopurge.snapRetainCount配置的),小时为单位。默认为0,表示不自动清除。
3、体验
先使用自带客户端来链接玩玩 bin目录下面./zkCli.sh
链接以后可使用help查看指令
create [-s] [-e] [-c] [-t ttl] path [data] [acl] 建立节点 -s序号节点 -e临时节点
Delete 删除节点(有子节点不能删除)
Deleteall 删除节点(包含子节点)
Delquota [-n] [-b] 删除配额(好比节点设置了数据大小限制) -n数量 -b 大小
get [-s] [-w] path 查看节点 -s包含状态 -w添加监听
getAcl [-s] path 获取权限配置
History 查看历史指令
listquota path 当前节点有哪些配额
ls [-s] [-w] [-R] path 查看全部子节点 -R递归查看全部子节点
removewatches path [-c|-d|-a] [-l] 删除监听
set [-s] [-v version] path data 修改数据
setAcl [-s] [-v version] [-R] path acl 添加/修改权限
setquota -n|-b val path 设置配额
stat [-w] path 查看状态
sync path 强制同步节点数据
知道了这些命令以后就能够玩一下了:
Ls / 查看根节点,能够看到默认就有一个zookeeper节点
注意点:
1.建立节点要以/开始
2.建立节点只能一级一级的建立
3.临时节点不能建立子节点