0


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. 获得锁后执行业务流程,完成后删除子节点释放锁。

本文转载自: https://blog.csdn.net/modelsetget/article/details/141021169
版权归原作者 modelsetget 所有, 如有侵权,请联系我们删除。

“ZooKeeper核心知识点整理,值得收藏!”的评论:

还没有评论