Zookeeper重要知识点梳理

目录

一、zoo.cfg参数

二、集群角色

三、节点结构

四、节点类型

五、Stat数据结构

六、Watcher机制


Zookeeper是具有高可用、高性能、一致性的开源协调服务框架,它提供了一些基本服务:统一命名服务、布式协调、存储数据、监听与通知等功能。

官网http://zookeeper.apache.org/

源码https://github.com/apache/zookeeper

一、zoo.cfg参数

参数

意义

tickTime

2000

syncLimit

Leader和follower之间的通讯时长 最长不能超过initLimt*ticktime

initLimt

接受客户端链接zk初始化的最长等待心跳时长 initLimt*ticktime

dataDir

数据目录

dataLogDir

日志文件

clientPort

客户端链接服务端端口号

Server.A=B:C:D

A:第几号服务器 B服务IP C代表Leader和follower通讯端口 D备用选leader端口

二、集群角色

ZooKeeper有3种集群角色:Leader、Follower、Observer 。

Leader

Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO,写操作都走leaderzk里面leader只有一个

Follower 
Follower的逻辑就比较简单了。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。 帮助leader处理读请求,没有写请求,有投票权

Observer :
如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。 可以处理读请求,没有写请求,没有投票权利

三、节点结构

ZooKeeper操作和维护的为一个个数据节点,称为 znode,采用类似文件系统的层级树状结构进行管理。如果 znode 节点包含数据则存储为字节数组(byte array)。节点名称不能重复。

四、节点类型

ZooKeeper 共有 4 种节点类型默认是PERSISTENT类型,对应的源码:org.apache.zookeeper.CreateMode

PERSISTENT:持久类型,如果不手动删除节点一直存在

EPHEMERAL:临时类型,客户端session失效就会随着删除节点,临时节点不能有子节点

PERSISTENT_SEQUENTIAL:持久有序类型,如果不手动删除节点一直存在,节点名称有序自增

EPHEMERAL_SEQUENTIAL:临时有序类型,客户端session失效就会随着删除节点,临时节点不能有子节点,节点名称有序自增

五、Stat数据结构

Stats数据结构包括状态信息、版本、权限相关属性,记录 ZNode 的三个数据版本,分别是version(当前ZNode的版本)、cversion(当前ZNode子节点的版本)和aversion(当前ZNode的ACL版本)。对应源码:org.apache.zookeeper.data.Stat。

属性含义如下:

状态属性

说明

czxid

节点创建时的zxid

mzxid

节点最新一次更新发生时的zxid

ctime

节点创建时的时间戳.

mtime

节点最新一次更新发生时的时间戳.

dataVersion

 节点数据的更新次数.

cversion

其子节点的更新次数

aclVersion

节点ACL(授权信息)的更新次数.

 

ephemeralOwner

如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0. 至于什么是ephemeral节点

 

dataLength

节点数据的字节数.

numChildren

子节点个数.

ls2、get、set命令会当前节点的Stats数据结构。

六、Watcher机制

Watcher(事件监听器),是Zookeeper中的一个很重要的特性。Zookeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper服务端会将事件通知到感兴趣的客户端上去,该机制是Zookeeper实现分布式协调服务的重要特性。对应的源码:org.apache.zookeeper.Watcher。

KeeperState

EventType

触发条件

说明

操作

SyncConnected(3)

None(-1)

客户端与服务端成功建立连接

此时客户端和服务器处于连接状态

 

NodeCreated(1)

Watcher监听的对应数据节点被创建

Create

NodeDeleted(2)

Watcher监听的对应数据节点被删除

Delete/znode

 

NodeDataChanged(3)

Watcher监听的对应数据节点的数据内容发生变更

setDate/znode

NodeChildChanged(4)

Wather监听的对应数据节点的子节点列表发生变更

Create/child

Disconnected(0)

None(-1)

客户端与ZooKeeper服务器断开连接

此时客户端和服务器处于断开连接状态

 

Expired(-112)

None(-1)

会话超时

此时客户端会话失效,通常同时也会受到SessionExpiredException异常

 

AuthFailed(4)

None(-1)

通常有两种情况,1:使用错误的schema进行权限检查 2:SASL权限检查失败

通常同时也会收到AuthFailedException异常

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值