ZooKeeper 数据模型

ZooKeeper 数据模型

数据存储形式

  • ZooKeeper 中对用户的数据采用 Key-Value 形式存储

  • ZooKeeper 的 key 是以目录树路径的形式表示(根目录 /)

  • ZooKeeper 的 key 之间存在父子关系

  • ZooKeeper 中的 Key-Value 称为目录树的 znode 节点

znode 状态

名称描述
cZxid 创建 znode 节点时的事务ID
ctime 创建 znode 节点的时间
mZxid 最后修改 znode 节点时的事务ID
mtime 最后修改 znode 节点的时间
pZxid 创建最新子节点
cversion 子节点版本号,子节点每次修改版本号加1
dataversion 数据版本号,数据每次修改该版本号加1
aclversion 权限版本号,权限每次修改该版本号加1
ephemeralOwner 如果是 0 表示永久节点;如果是会话 id,表示是临时节点
dataLength znode 节点的数据长度
numChildren znode 节点拥有子节点的数量(只统计直接子节点的数量)

znode 类型

ZooKeeper 中的 znode 有多种类型:

  • PERSISTENT(持久不带序号 参数:默认):创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中

  • EPHEMERAL (短暂不带序号 参数:-e):创建者一旦跟集群断开联系,zk就会将这个节点删除

  • SEQUENTIAL (带序号 参数:-s):这类节点,zk会自动拼接上一个序号,而且序号是递增的

组合类型

  • PERSISTENT :持久不带序号(默认)

  • EPHEMERAL :短暂不带序号 (参数:-e)

  • PERSISTENT 且 SEQUENTIAL :持久且带序号(参数 :-s)

  • EPHEMERAL 且 SEQUENTIAL :短暂且带序号(参数:-e -s)

# 创建持久化节点(默认)
[zk: localhost:2181(CONNECTED) 1] create /aa "aa"

# 创建临时节点(客户端连接断开节点自动删除)
[zk: localhost:2181(CONNECTED) 1] create -e /bb "bb"

# 创建带序号节点(自动给节点添加序号,避免节点重复)
[zk: localhost:2181(CONNECTED) 1] create -s /cc "cc"
Created /cc0000000006

# 创建临时且带序号节点
[zk: localhost:2181(CONNECTED) 1] create  -e -s /cc "cc"

ZooKeeper 数据一致性的保证

  • 顺序一致性( Sequential Consistency )

    来自客户端的写请求将按照发送的顺序应用

  • 原子性( Atomicity )

    更新成功或失败,没有部分结果

  • 单一视图( Single System Image )

    客户机将看到服务的相同视图,而与它连接到的服务器无关。 意思就是说:客户端无论连接哪一个服务器,得到的数据都是一样

  • 可靠性( Reliability )

    一旦应用了更新,它将从那时起一直存在,直到客户端覆盖该更新。

  • 最终一致性( Timeliness )

    系统的客户端视图保证在一定的时间范围内是最新的。

posted @ 2021-12-02 19:35  追こするれい的人  阅读(43)  评论(0编辑  收藏  举报