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

Zookeeper--04---Zookeeper内部的数据模型,第1张

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

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

文章目录
  • Zookeeper内部的数据模型
    • 1.zk是如何保存数据的
        • ==zk中的数据是保存在节点上的==,节点就是znode,多个znode之间构成⼀颗树的⽬录结构。
    • 2.zk中的znode是什么样的结构
        • 2.1 data:保存数据
        • 2.2 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
      • 那么临时节点是如何维持⼼跳呢?
      • 通过这个特性,==zk作为注册中心, 可以实现服务注册与发现的效果==。
        • 3.4 临时序号节点
        • create -e -s /test3
        • 3.5 Container节点
        • create -c /test3
        • 3.6 TTL节点
    • 4.zk的数据持久化
        • ==zk的数据是运⾏在内存中==,zk提供了两种持久化机制:
      • 事务⽇志
      • 数据快照


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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存