ZooKeeper核心知识点整理,值得收藏!

基本结构

  • 数据模型:树形结构,根节点下可创建子节点,使用绝对路径查询。
  • 节点类型
    • 持久节点:会话关闭后依然存在,需显式删除。
    • 临时节点:会话关闭后自动删除,可用于监控。
    • 有序节点:创建时自动添加递增序号。

节点数据与状态

  • 节点数据:二进制数组,存储数据、ACL、子节点信息等。
  • 节点状态:每个节点有状态信息,可通过stat命令查看。
  • 节点版本:三种类型,更新操作会引起版本变化。

数据存储

  • 内存数据:通过DataTree类存储。
  • 数据日志:记录服务运行状态,用于异常分析。
  • 事务日志:记录事务请求,用于数据同步。
  • 快照文件:定期备份内存数据到磁盘。

会话机制

  • 会话创建:连接即会话,包含会话ID、超时时间、关闭状态。
  • 超时时间:客户端与服务端协商决定。
  • 会话状态:包括连接、重新连接、关闭等状态。
  • 分桶策略:按时间间隔管理会话过期时间。

集群

  • 角色:Leader、Follow、Observer。
  • Leader:管理集群,工作分配和调度。
  • Follow:处理非事务请求,参与Leader选举。
  • Observer:处理查询请求,不参与选举。

选举机制

  • 发生在集群启动或Leader失效时。
  • 包括发起投票、接收投票、统计投票三个步骤。
  • 投票基于ZXID和myid决定Leader。

基本原理

  • 序列化机制:使用Jute,二进制方式。
  • ZAB协议:原子广播协议,解决数据一致性问题。

Watch机制

  • 订阅节点变化,触发通知。
  • 分布式环境下的观察者模式。
  • Watch事件触发取决于会话状态和注册事件类型。
  • Watch是一次性的,需重新添加。

权限控制

  • ACL由模式、授权对象、权限信息组成。
  • 模式包括范围验证、口令验证、World模式。
  • 授权对象可以是IP、用户名或所有用户。
  • 权限包括创建、更新、读取、删除、管理。

应用场景

  • 悲观锁:通过创建节点获取锁。
  • 乐观锁:使用节点version属性校验。
  • 分布式锁:使用ZooKeeper节点实现,避免死锁和羊群效应。

分布式锁实现流程

  1. 客户端连接ZooKeeper,创建/lock下临时有序子节点。
  2. 判断是否为最小序号子节点,是则获得锁。
  3. 未获得锁的客户端监听子节点变更。
  4. 获得锁后执行业务流程,完成后删除子节点释放锁。
  • 19
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值