Zookeeper技术内幕之重要理论

4、Zookeeper技术内幕之重要理论

4.1 重要理论

4.1.1 数据模型znode

       红色表示根节点,蓝色表示父节点,绿色表示叶子节点。

       zk数据存储结构与标准的Unix文件系统非常相似,都是在根节点下挂很多子节点。zk中没有引入传统文件系统中目录与文件的概念,而是使用了称为znode的数据节点概念。znode是zk中数据的最小单元,每个znode上都可以保存数据,同时还可以挂子节点,形成一个树形化命名空间。

(1)节点类型

  • 持久化节点
  • 持久化顺序节点
  • 临时节点:临时节点的生命周期与客户端的会话绑定在一起。临时节点不能有子节点,即临时节点只能是叶子节点。
  • 临时顺序节点

 

(2)节点状态

       cZxid:Created Zxid,表示当前znode被创建时的事务ID

       ctime:Created Time,表示当前znode被创建的时间

       mZxid:Modified Zxid,表示当前znode最后一次被修改时的事务ID

       mtime:Modified Time,表示当前znode最后一次被修改的时间

       pZxid:表示当前znode的子节点列表最后一次被修改时的事务ID。注意,只能是其子节点列表变更了才会引起pZxid的变更,子节点的内容的修改不会影响pZxid

       cversion:Children Version,表示子节点版本号。该版本号用于充当乐观锁

       dataversion:表示当前znode数据的版本号。该版本号用于充当乐观锁

       aclversion:表示znode的权限ACL的版本号。该版本号用于充当乐观锁

       ephemeralOwner:若当前znode是持久节点,则其值为0;若为临时节点,则其值为创建该节点的会话SessionID。当会话消失后,会根据SessionID来查找与该会话相关的临时节点进行删除。

       dataLength:当前znode中存放的数据的长度

       numChildren:当前znode所包含的子节点的个数

 

4.1.2 会话

       会话是zk中最重要的概念之一,客户端与服务端之间的任何交互操作都与会话相关。

       Zookeeper客户端启动时,首先会与zk服务器建立一个TCP长连接。连接一旦建立,客户端会话的生命周期也就开始了。

 

(1)会话状态

       常见的会话有三种:

  • CONNECTING:连接中。客户端要创建连接,其首先会在客户端创建一个zk对象,代表服务器。其会采用轮询的方式对服务器列表逐个尝试连接,直到连接成功。不过,为了对server进行负载均衡,其首先会对服务器列表进行打散操作,然后在轮询。
  • CONNECTED:已经连接。
  • CLOSE:连接已经关闭。

 

(2)会话连接事件

客户端与服务端的长连接失效后,客户端将进行重连。在重连的过程中客户端会产生三种会话连接事件:

  • CONNECTION_LOSS
  • SESSION_MOVED
  • SESSION_EXPIRED

 

(3)分桶策略

       前面无论是会话状态还是会话连接事件,都与会话超时有着紧密的联系。zk对于会话超时管理,采用了一种特殊的方式-分桶策略

A、基本概念

       分桶策略是指,将超时时间相近的会话放到同一个桶中进行管理,以减少管理的复杂度。在检查超时时,只需要检查桶中剩余的会话即可,因为没有超时的会话已经移出桶了,而桶中存在的会话就是超时会话。

       从以上描述可知,zk对于会话的超时管理并非精确管理,即并非是一超时马上就执行相关超时操作。

 

B、分桶依据

       分桶计算的依据为:

       其中ExpirationInternal的值为TickTime。

 

4.1.3 ACL

(1)ACL简介

       ACL全称为Access Control List(访问控制列表),是一种细粒度的权限管理策略,可以针对任意用户与组进行细粒度的权限控制。zk利用ACL控制znode节点的访问权限,如节点数据读写、节点创建、节点删除、读取子节点列表、设置节点权限等。

 

(2)zk的ACL维度

       Unix/Linux系统的ACL分为两个维度:组与权限,且目录的子目录或者文件能继承父目录的ACL。而Zookeeper的ACL分为三个维度:授权策略scheme、授权对象id、用户权限permission,子znode不会继承父znode权限。

A、授权策略scheme

       授权策略用于确认权限验证过程中使用的检查策略(简单地说,通过什么验证权限,即一个用户要访问某个znode,如何验证身份),在zk中最常用的四种策略。

  • IP
  • Digest
  • World
  • Super

 

B、授权对象id

       授权对象指的是权限赋予的用户。不同的授权策略具有不同的授权对象。下面是各个授权模式下对应的授权对象id。

  • IP
  • Digest
  • World
  • Super

 

C、权限Permission

       权限是指通过了验证的用户可以对znode执行的操作。共有5种权限,不过zk支持自定义权限。

  • c:Create
  • d:Delete
  • r:Read
  • w:Write
  • a:ACL

 

4.1.4 Watcher机制

       zk通过Watcher机制实现了发布/订阅模式。

(1)watcher工作原理

(2)watcher事件

       对于同一个事件类型,在不同的通知状态中代表的含义是不同的。

 

(3)watcher特性

       zk的watcher机制具有以下几个特征:

  • 一次性
  • 串行性
  • 轻量级

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值