zookeeper的使用及基本概念
zookeeper的使用及基本原理
一、zookeeper的安装
1.下载
下载链接:http://zookeeper.apache.org/releases.html
进入后选择版本下载:
其中alpha与beta均为测试版本,目前最新的稳定版本为3.4.13。
2.安装与配置
tar -zxf zookeeper-3.4.13.tar.gz 安装目录
解压后进入安装目录的/zookeeper-3.4.13/conf目录下,将zoo_template.cfg复制一份重命名为zoo.cfg
cp zoo_template.cfg zoo.cfg
修改zoo.cfg中dataDir=/data/zookeeper
并保存,在本地磁盘新建/data/zookeeper目录,该目录为zookeeper的数据存储目录。
这里默认的是单机模式,zookeeper支持两种启动模式:单机、集群
集群配置需要在三台以上设备上同时部署zookeeper,开发或者自己学习时,我们很难弄到多台设备,这时可以使用一个伪集群的配置方式来实现,具体操作如下:
- copy三份zookeeper到三个不同目录,/zookeeper1,/zookeeper2,/zookeeper3
- 创建/data/zookeeper1,/data/zookeeper2,/data/zookeeper3三个目录
- 修改三个zookeeper下的zoo.cfg,分别将dataDir指向第二步创建好的三个目录
- 在zoo.cfg中加入如下配置,其中ip改为自己服务器ip即可:
server.1= 192.168.1.148:2888:3888 server.2= 192.168.1.148:4888:5888 server.3= 192.168.1.148:6888:7888
- 分别在/data/zookeeper1,/data/zookeeper2,/data/zookeeper3下创建myid文件,内容分别为1、2、3;内容与第四步中server.后面跟的数字一致
- 分别启动三个zookeeper
3.启动
进入目录/zookeeper-3.4.13/bin下执行脚本zkServer.sh
sh zkServer.sh start
出现下图所示即表示启动成功
也可以通过命令查看日志:
tail -f zookeeper.out
二、zookeeper的简单使用
1.连接zookeeper
启动成功后,通过/zookeeper-3.4.13/bin下zkCli.sh可以直接连接zookeeper
sh zkCli.sh
2.增删改查
zookeeper的增删改查命令分别为:
- 新增节点:
create [-s] [-e] path data acl
(其中-s表示有序节点,-e表示临时节点,acl为权限类型,这三个参数都是非必要参数,即通过create path data
就可以新增一个节点) - 删除节点:
delete path [version]
(其中version指改节点的版本信息,不指定时表示不验证版本信息,直接删除) - 修改节点:
set path data [version]
(version与delete中含义一样) - 查询节点信息:
get path [watch]
(watch指定一个监听器,当节点变化时会做出通知,非必要参数) - 另外
ls /节点
可以列出节点的字节点
下面以节点test为例,分别使用增删改查命令操作该节点:
通过ls命令可以看出根节点下面已经有两个节点(这个是我使用过dubbo,所有产生了一个dubbo节点,默认只有一个zookeeper)。
新增节点可以通过ls显示出来,
通过get命令可以查询到test下对应的值为create时设置的0(其他内容暂时不解释)
通过set命令将/test节点对应的值修改为11.
delete成功将/test节点删除。
三、zookeeper的基本概念
1.zookeeper文件系统
通过上面的操作,我们可以发现zookeeper提供了一个文件系统,我们可以随意添加删除节点,可以为节点赋值并可以修改这个值,可以为节点添加自节点。其目录结构为树形结构,如下:
1.1 节点类型
在上面提到过,新增节点时可以选择两个可选参数[-s] [-e]
,其中-s表示有序节点,-e表示临时节点(临时节点的生命周期为从新建节点到本次客户端连接断开)。通过命令组合,我们可以猜得到,zookeeper的节点有四种类型:
- 持久化节点(PERSISTENT)
- 持久化有序节点(PERSISTENT_SEQUENTIAL)
- 临时节点(EPHEMERAL)
- 临时有序节点(EPHEMERAL_SEQUENTIAL)
1.2 有序节点
有序节点创建时,只需加入参数[-s]
即可,创建后的节点会自动加一个自增的数字后缀,效果如下:
1.3 临时节点
临时节点的创建只需加上[-e]
参数即可,临时节点会在客户端端开链接后删除,测试效果:
- 创建临时节点
- 端开客户端
- 重新进入, ls查看
可以看到,之前创建的持久化有序节点依然存在,但是刚才创建的临时节点已经消失。
2. watcher
zookeeper提供了watcher机制,客户端对一个节点注册watcher,当节点发生变化时,zookeeper服务器会通知客户端相应的变化。
- watcher注册时机:在查询节点时可以为该节点注册一个watcher,指令包括ls,get,stat
- watcher触发时机:当注册了watcher的节点发生变化时,即出现set,delete,create时,zookeeper会通知客户端该变化
3.zookeeper可以做什么
1.命名服务 2.配置管理 3.集群管理 4.分布式锁 5.队列管理