Zookeeper--04---Zookeeper内部的数据模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


Zookeeper内部的数据模型

1.zk是如何保存数据的

zk中的数据是保存在节点上的,节点就是znode,多个znode之间构成⼀颗树的⽬录结构。
  • Zookeeper 的数据模型是什么样呢?它很像数据结构当中的树,
  • 也很像⽂件系统的⽬录。
    在这里插入图片描述
  • 树是由节点所组成,Zookeeper 的数据存储也同样是基于节点,这种节点叫做 Znode
  • 但是,不同于树的节点,Znode 的引⽤⽅式是路径引⽤,类似于⽂件路径:
/动物/猫
/汽⻋/宝⻢

这样的层级结构,让每⼀个 Znode 节点拥有唯⼀的路径,就像命名空间⼀样对不同信息作出
清晰的隔离。

2.zk中的znode是什么样的结构

zk中的znode,包含了四个部分:

2.1 data:保存数据
2.2 acl:权限

定义了什么样的.户能够操作这个节点,且能够进.怎样的操作。

  • c: create 创建权限,允许在该节点下创建.节点
  • w:write 更新权限,允许更新该节点的数据
  • r:read 读取权限,允许读取该节点的内容以及.节点的列表信息
  • d:delete 删除权限,允许删除该节点的.节点
  • a:admin 管理者权限,允许对该节点进.acl权限设置
2.3 stat:描述当前znode的元数据

在这里插入图片描述

在这里插入图片描述

2.4 child:当前节点的⼦节点

3.zk中节点znode的类型

3.1 持久节点:
create /test3

创建出的节点,在会话结束后依然存在。保存数据

3.2 持久序号节点:
  • 创建出的节点,根据先后顺序,会在节点之后带上⼀个数值,越后执⾏数值越⼤,适⽤于分布式锁的应⽤场景- 单调递增
create -s /test3

在这里插入图片描述

在这里插入图片描述

3.3 临时节点:
create -e /test3
  1. 该节点的生命周期依赖于创建它们的会话。一旦会话(Session)结束,临时节点将被自动删除,当然可以也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端会话,但他们对所有的客户端还是可见的。
  2. ZooKeeper的临时节 点不允许拥有子节点。

那么临时节点是如何维持⼼跳呢?

在这里插入图片描述

通过这个特性,zk作为注册中心, 可以实现服务注册与发现的效果

3.4 临时序号节点
  • 跟持久序号节点相同,适⽤于临时的分布式锁
create -e -s /test3

在这里插入图片描述

3.5 Container节点

Container节点(3.5.3版本新增):Container容器节点,当容器中没有任何⼦节点,该容器节点会被zk定期删除(60s)。

create -c /test3

在这里插入图片描述

3.6 TTL节点
  • 可以指定节点的到期时间,到期后被zk定时删除。
  • 只能通过系统配置zookeeper.extendedTypesEnabled=true 开启

4.zk的数据持久化

zk的数据是运⾏在内存中,zk提供了两种持久化机制:
  • 事务⽇志
  • 数据快照

事务⽇志

  • zk把执⾏的命令以⽇志形式保存在dataLogDir指定的路径中的⽂件中(如果没有指定dataLogDir,则按dataDir指定的路径)。

数据快照

  • zk会在⼀定的时间间隔内做⼀次内存数据的快照,把该时刻的内存数据保存在快照⽂件中。

zk通过两种形式的持久化,在恢复时先恢复快照⽂件中的数据到内存中,再⽤⽇志⽂件中的数据做增量恢复,这样的恢复速度更快。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值