Zookeeper基础入门
Posted Code_BinBin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper基础入门相关的知识,希望对你有一定的参考价值。
之前学springcloud的时候了解了一下zookeeper,但是现在很久没学就忘记了,所以今天我又重新学了一下,顺便做了个笔记。
前置知识
- linux知识
- linux jdk安装和环境变量配置
- docker了解
Zookeeper简介
zookeeper,动物园管理者,一个分布式,开放源码的分布式应用程序协调服务,zookeeper用java编写,但是可以用java和c两种语言编写
Zookeeper内存数据模型
模型的特点
- 每个子目录如/node1都被称作一个znode(节点)。这个znode 是被它所在的路径唯一标识
- znode可以有子节点目录,并且每个znode 可以存储数据
- znode是有版本的,每个znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
- znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端
节点分类
持久节点(PERSISTENT)
是指在节点创建后,就一直存在,直到有删除操作来主动删除这个节点――不会因为创建该节点的客户端会话失效而消失.
持久顺序节点(PERSISTENT_SEQUENTIAL)
这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZN会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。
临时节点(EPHEMERAL)
和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。
临时顺序节点
具有临时节点特点,额外的特性是,每个父节点会为他的第一级子节点维护一份时序。这点和刚才提到的持久顺序节点类似
在Linux下安装Zookeeper
去官网下载ZK
这里可以用自己买的服务器或者虚拟机,我用的是自己买的阿里云的服务器,但是操作流程一样
在服务器里面安装
把下载好的ZK压缩包放入服务器下的opt文件夹下
进入服务器来到opt文件下,解压压缩包
tar -zxvf zookeeper-3.4.12.tar.gz
解压完后opt目录下会多出一个zookeeper-版本号的文件夹,给他重命名,当然不重命名也可以,但是我觉得重命名方便操作
mv zookeeper-3.4.12 zk
在zk目录下新建一个文件夹data,先别问为什么
mkdir data
进入修改后zk目录的conf目录下,修改zoo_simple.cfg文件的名字
mv zoo_simple.cfg zoo.cfg
进入conf文件,用命令打开zoo。cfg
vim zoo.cfg
把dataDir的参数修改,这就对应了之前我们新建的data目录
启动Zookeeper
我们进入bin目录下,输入如下命令
sh zkServer.sh start
返回上级zk目录,输入命令
./bin/zkCli.sh
测试一下,成功
ls /
Zookeeper配置参数说明
- tickTime:集群节点之间的心跳
- initLimit:集群从初始化的时候,节点超时的时间
- syncLimit:集群在运行过程中超时的时间
- dataDir:默认数据存储的位置
- clientPort:服务端口
客户端基本操作
- ls path:查看特定结点下面的节点
- create path data:创建持久节点
- create -s path data:创建持久性顺序节点
- create -e path data:创建临时性节点
- create -e -s path data:创建临时性顺序节点
- stat path:查看节点状态
- set path data:修改节点数据
- ls2 path:查看节点下孩子和当前节点状态
- history:查看历史操作
- get path:获的节点上绑定的数据
- delete path:删除节点
- rar path:递归删除结点
- quit:退出当前会话
节点的监听机制
客户端可以监测znode节点的变化。Zonode节点的变化触发相应的事件,然后清除对该节点的监测。当监测一个znode节点时候,
Zookeeper会发送通知给监测节点。一个Watch事件是一个一次性的触发器,当被设置了Watch的数据获取目录发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端以便通知它们。
- ls /path ture :监听节点目录的变化
- get /path ture :监听节点数据的变化
java操作Zookeeper
依赖
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
以上是关于Zookeeper基础入门的主要内容,如果未能解决你的问题,请参考以下文章