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官网

这里可以用自己买的服务器或者虚拟机,我用的是自己买的阿里云的服务器,但是操作流程一样

在这里插入图片描述

在服务器里面安装

把下载好的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基础入门的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper之入门(原理基础知识)

大数据框架开发基础之Zookeeper入门

zookeeper 入门系列-理论基础 – zab 协议

原创 | 大数据入门基础系列之ZooKeeper如何实现分布式锁

基础组件1Flume入门Agent

zookeeper 入门