Zookeeper简介、两大核心概念以及节点操作

1、Zookeeper简介

1.1、什么是Zookeeper

它是一个分布式协调框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同 步服务、集群管理、分布式应用配置项的管理等。

在这里插入图片描述

2、Zookeeper两大核心概念

Zookeeper有两大核心概念,文件系统数据结构+监听通知机制。

2.1、文件系统数据结构

Zookeeper的文件系统数据结构大致如下所示:

在这里插入图片描述

上面的这些节点我们称之为znode(目录节点),和windows的文件夹类似,我们可以随意的去增加、删除znode,znode节点有以下几种类型。
1、PERSISTENT­持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,它将永远存在。
2、 PERSISTENT_SEQUENTIAL­持久化顺序编号目录节点
也就是持久化目录节点,不过比持久化目录节点多了一个顺序编号。
3、EPHEMERAL­临时目录节点
客户端与zookeeper断开连接后,该节点被删除。
4、EPHEMERAL_SEQUENTIAL­临时顺序编号目录节点
也就是临时节点,不过比临时节点多了一个顺序编号。
5、Container 节点
3.5.3 版本新增,如果Container节点下面没有子节点,则Container节点在未来会被Zookeeper自动清除,定时任务默认 60s 检查一次。
6、TTL 节点
默认禁用,只能通过系统配置 -Dzookeeper.extendedTypesEnabled=true 开启,不稳定,意思是就算到了TTL的时间,还是要看定时任务的执行情况。配置的地方为 zoo.cfg 文件,如下图所示:

在这里插入图片描述

2.2、监听通知机制

客户端注册监听它关心的任意节点,或者目录节点及递归子目录节点。
1、如果注册的是对某个节点的监听,则当这个节点被删除,或者被修改时,对应的客户端将被通知。
2、如果注册的是对某个目录的监听,则当这个目录有子节点被创建,或者有子节点被删除,对应的客户端将被通知。
3、如果注册的是对某个目录的递归子节点进行监听,则当这个目录下面的任意子节点有目录结构的变化(有子节点被创建,或被删除)或者根节点有数据变化时,对应的客户端将被通知。
注意:所有的通知都是一次性的,及无论是对节点还是对目录进行的监听,一旦触发,对应的监听即被移除。递归子节点,监听是对所有子节点的,所以,每个子节点下面的事件同样只会被触 发一次。

3、Zookeeper节点操作

3.1、Zookeeper指令帮助

在进入客户端的时候,我们可以输入help指令去看所有的zk操作指令,如下图所示:

在这里插入图片描述

3.2、创建节点命令详解

创建节点是这条命令,create [-s] [-e] [-c] [-t ttl] path [data] [acl]
下面对参数先做一些说明

参数含义
-s代表即将创建顺序节点
-e代表即将创建临时节点
-c代表即将创建容器节点
-t ttl可以给节点添加过期时间,默认禁用,需要通过系统参数启用
path创建节点的路径,必须是全路径
data节点保存的数据
acl控制权限,控制哪个用户可以访问

3.3、节点操作示例

// 创建一个有序的持久化节点
create -s /persis
// 创建一个持久化节点
create /persisor
// 获取节点
get /persisor
// 给节点写数据
set /persisor ppp
// 查看节点状态信息
stat /persisor

如下图所示:

在这里插入图片描述

3.4、节点状态参数详解

当输入stat命令时,打印出的节点信息字段详解

参数含义
cZxid创建znode的事务ID(Zxid的值)
ctime最后修改znode的事务ID
mZxid最后添加或删除子节点的事务ID(子节点列表发生变化才会发生改变)
mtimeznode创建时间
pZxidznode最近修改时间
cversionznode的当前数据版本
dataVersionznode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个 版本)
aclVersion表示对此znode的acl版本
ephemeralOwnerznode是临时znode时,表示znode所有者的 session ID。 如果 znode不是临时znode,则该字段设置为零
dataLengthznode数据字段的长度
numChildrenznode的子znode的数量

4、事件监听机制扩展

前面核心概念的时候讲解了事件监听机制的概念,下来进行详解和操作。
事件监听机制就是:事件监听一旦被加上,当节点发生变化时,服务端会给相应的客户端发出一个节点变化的通知。

4.1、针对节点的监听

一旦事件触发,对应的注册立刻被删除,所以事件监听是一次性的。
get ‐w /path // 注册监听的同时获取数据
stat ‐w /path // 对节点进行监听,且获取元数据信息


get ‐w /path 如下图所示:
在这里插入图片描述


stat ‐w /path 如下图所示:
在这里插入图片描述

4.2、针对路径的监听

ls -w /path // 注册监听
这是对单个路径的监听,也是一次性的。

在这里插入图片描述

ls -R -w /test
对当前路径下所有的节点都加一个监听,相当于一次性加了多个监听,但是监听都是一次性的。

在这里插入图片描述

5、Zookeeper应用场景

1、分布式配置中心
2、分布式注册中心
3、分布式锁
4、分布式队列
5、集群选举
6、分布式屏障
7、发布/订阅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值