81、zk的数据模型和节点类型

zk的数据模型和节点类型

数据模型: 树形结构

zk维护的数据主要有: 客户端的会话 (session) 状态及数据节点 (dataNode) 信息。

zk在内存中构造了个DataTree的数据结构,维护着path到dataNode的映射以及dataNode间的树状层级关系。为了提高读取性能,集群中每个服务节点都是将数据全量存储在内存中。所以,zk最适于读多写少且轻量级数据的应用场景。

数据仅存储在内存是很不安全的,zk采用事务日志文件及快照文件的方案来落盘数据,保障数据在不丢失的情况下能快速恢复。

树中的每个节点被称为- Znode

Znode 兼具文件和目录两种特点。可以做路径标识,也可以存储数据,并可以具有子 Znode。具有增、删、改查等操作。

Znode 具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将 替换掉节点的所有数据。另外,每一个节点都拥有自己的 ACL(访问控制列 表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。

Znode 存储数据大小有限制。每个 Znode 的数据大小至多 1M,常规使用中应该远小于此值。

Znode 通过路径引用,如同 Unix 中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在 ZooKeeper 中,路径由Unicode 字符串组成,并且有一些限制。字符串"/zokeeper"用以保存管理信息,比如关键配额信息。

  • 持久节点:一旦创建、该数据节点会一直存储在zk服务器上、即使创建该节点的客户端与服务端的会话关闭了、该节点也不会被删除
  • 临时节点:当创建该节点的客户端会话因超时或发生异常而关闭时、该节点也相应的在zk上被删除
  • 有序节点:不是一种单独种类的节点、而是在持久节点和临时节点的基础上、增加了一个节点有序的性质

你可能感兴趣的:(Znode,数据模型,树形结构,zk,数据结构,zookeeper,分布式)