什么是Zookeeper

ZooKeeper

简介

Zookeeper是一种分布式协调服务,用于管理大型主机。

应用场景:

  • 分布式协调组件
  • 分布式锁(zk可以实现强一致性)
  • 无状态化实现,将分布式系统的数据保存在zk,无论访问的是哪个系统都不影响

ZK内部的数据模型

zk的数据保存在节点上,类似树的结构也很像目录结构。zk的数据存在Znode节点上,Znode的引用方式是路径引用,跟文件类似

/spring/springboot

Znode节点组成

Znode包含四个部分

  1. data:保存数据
  2. acl:权限,定义什么样的用户能够操作这个节点,并且能够进行怎样的操作
    • c:create 创建权限,允许在该节点下创建子节点
    • w:write 更新权限,允许更新该节点的数据
    • r:read 读取权限,允许读取该节点的内容以及子节点的列表信息
    • d:delete 删除权限,允许删除该节点的子节点
    • a:admin 管理者权限,允许对该节点进行acl权限设置
  3. stat:描述当前znode的元数据,也就是当前节点的详细信息
  4. child:当前节点的子节点

Znode节点类型

  • 持久节点:创建出的节点在会话结束之后依然存在,保存数据
  • 持久序号节点:创建出的节点会根据先后顺序,在节点之后带上一个数值,越后执行数值越大,使用于分布式锁应用场景,数值单调递增
  • 临时节点:在会话结束后会自动删除,可以用来实现服务的注册与发现
  • 临时序号节点:跟持久序号节点相同,适用于临时的分布式锁
  • Container节点:容器节点,当容器中没有任何子节点,该节点会被zk定期删除(60S)
  • TTL节点:可以指定节点的到期时间,到期被zk定时删除,只能通过系统配置zookeeper.extendedTypeEnabled=true开启

zk的数据持久化

zk数据运行在内存之中,zk提供了两种持久化机制

  • 事务日志

    把执行的命令以日志形式保存在dataLogDir指定的路径中的文件中

  • 数据快照

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值