zookeeper的内部数据模型

znode的组成部分

  • data:保存数据
  • acl:权限
  • stat:当前节点的元数据
stat值说明
XXX节点数据信息
cZxid = 0x800000002 节点创建时的zxid
ctime = Thu May 09 03:41:15 CST 2019 节点创建的时间
mZxid = 0x800000002 数据节点最终一次更新时的事务ID
mtime = Thu May 09 03:41:15 CST 2019 节点最近⼀次更新的时间
pZxid = 0x800000002 对应节点与⼦节点(或者⼦节点)的修改的事务ID,与孙⼦节点⽆关
cversion = 0 ⼦节点数据更新次数
dataVersion = 0 本节点数据更新次数
aclVersion = 0 节点授权信息(ACL)的更新次数
ephemeralOwner = 0x0 如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的sessionid. 如果该节点不是临时节点,ephemeralOwner值为0
dataLength = 4 节点的数据⻓度
numChildren = 0 ⼦节点的个数
  • child:当前节点的子节点

权限控制acl

Zookeeper采用ACL(AccessControlLists) 策略来进行权限控制,类似与UNIX文件系统的权限控制
数据节点znode的操作包含以下5种权限:
  • CREATE: 创建子节点
  • READ: 读取节点的数据和列出子节点
  • WRITE: 更新节点的数据
  • DELETE: 删除子节点
  • ADMIN: 设置节点ACL的权限

注意:这里的CREATEDELETE的权限控制是针对子节点的权限控制

Zookeeperznode的四种身份认证的方式:
  • world: 默认方式. 所有的用户都可以无条件进行访问
  • ip: 指定ip的用户可以进行访问
  • auth: 已经进行认证的用户可以进行访问
  • digest: 通过用户名username和密码password的认证方式进行访问

znode的六种类型

持久节点PERSISTENT : 一旦创建节点znode, 就会一直存在.即使Zookeeper宕机也不会消失,直到将该节点znode删除

  • 客户端与Zookeeper断开连接后,这个节点还会存在.如果创建成功,就不会意外丢失,即使服务器全部重启还会存在
  • 每个持久节点PERSISTENT中既可以包含数据,也可以包含子节点

临时节点EPHEMERAL : 临时节点znode的生命周期是与客户端会话session绑定的,会话消失则节点消失. 临时节点znode只能作为叶子节点,不能创建子节点(常用于实现注册中心)

  • 客户端与Zookeeper断开连接后,这个节点就删除
  • 临时节点EPHEMERAL在创建的客户端和服务器间的Session结束时自动删除,因为服务器重启会导致Session结束,此时临时节点EPHEMERAL也会自动删除

持久顺序节点PERSISTENT_SEQUENTIAL : 除了具备持久节点PERSISTENT的性质之外,节点znode的名称还具有顺序性

临时顺序节点EPHEMERAL_SEQUENTIAL : 除了具备临时节点EPHEMERAL的性质之外,节点znode的名称还具有顺序性

容器节点:Container容器节点,当容器中没有任何子节点,该容器节点就会被zk定期删除(60s)

TTL节点:可以指定节点的到期时间,到期后被zk定时删除

ZK的数据持久化

因为zk是运行在内存中,因此为了数据不丢失,需要进行持久化,zk中提供了两种持久化机制:事务日志和数据快照;zk通过两种形式的持久化,在恢复时先恢复快照文件的中的数据导内存中,在利用日志文件中的数据做增量恢复,这样恢复的速度更快

事务日志

zk把执行的命令以日志的形式保存在dataLogDir指定的路径中的二进制文件(如果没有指定dataLogDir,则按照dataDir指定的路径)

数据快照

zk会在一定的时间间隔内做一次内存数据的快照,吧该时刻的内存数据保存在快照中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值