zookeeper(二)数据结构及作用体现

一、zk 数据模型介绍

  • zk 中的数据结构是一棵树结构
  • 每个节点都是一个 znode,节点中可以保存数据,节点可以分为临时节点和永久节点。
  • 节点中包含一个版本号,每当节点数据发生变化,那么版本号也会进行累加(乐观锁)
  • 节点操作有权限系统去设置,名为 acl
zk的树结构

1.1 znode 结构

属性 描述
czxid 节点被创建的Zxid值
mzxid 节点被修改的Zxid值
ctime 节点被创建的时间
mtime 节点最后一次被修改的时间
versoin 节点被修改的版本号
cversion 节点的所拥有子节点被修改的版本号
aversion 节点的ACL被修改的版本号
emphemeralOwner 如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0
dataLength 节点数据域的长度
numChildren 节点拥有的子节点个数

1.2 znode的种类

znode 有两种维度来决定种类

  • 是否临时(是否持久)
  • 是否顺序

所以有四种组合:

  • 持久顺序:节点创建后会一直存在zookeeper服务器上,直到主动删除
  • 持久非顺序:每个节点都会为它的一级子节点维护一个顺序
  • 临时顺序:临时节点的生命周期和客户端的会话保持一致。当客户端会话失效,该节点自动清理
  • 临时非顺序:在临时节点上多了一个顺序的特性

无论是哪种类型的 znode,在 zookeeper 的树结构中都是唯一的,无法重复创建 path 完全相同的 znode。即使是有顺序的,zk 也会自动在 path 后面顺延序列号。

二、zk 的作用体现

2.1 选举

master 节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这就是所谓的首脑模式,从而保证我们的集群是高可用的。

2.2 统一配置文件

统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器。

2.3 发布订阅

发布订阅,dubbo 发布者可以将数据保存到 znode 上,其它订阅者可以读取到这个数据。

2.4 分布式锁

提供分布式锁,分布式环境中不同进程进行公共资源的抢夺。这就是利用的 znode 唯一的特点来实现的作用之一。

2.5 集群管理

集中保证数据的强一致性,无论客户端读取哪一个节点,都可以读取到完全相同的数据。


image.png

你可能感兴趣的:(zookeeper(二)数据结构及作用体现)