Zookeeper--04---Zookeeper内部的数据模型
Posted 高高for 循环
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
- 该节点的生命周期依赖于创建它们的会话。一旦会话(Session)结束,临时节点将被自动删除,当然可以也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端会话,但他们对所有的客户端还是可见的。
- 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通过两种形式的持久化,在恢复时先恢复快照⽂件中的数据到内存中,再⽤⽇志⽂件中的数据做增量恢复,这样的恢复速度更快。
以上是关于Zookeeper--04---Zookeeper内部的数据模型的主要内容,如果未能解决你的问题,请参考以下文章