概述

  • 开源的分布式服务框架
  • 为其他框架稳定运行提供服务
  • 统一命名服务(Dubbo)、分布式配置管理(Solr)、分布式消息队列(pub / sub)、分布式锁、分布式协调管理等

结构设计

  • 主从架构(leader / follower),一个领导者,多个跟随者
  • 集群中有半数以上节点存活,ZK集群就能正常服务

特点

  • 全局数据一致
  • 更新请求顺序进行
  • 数据更新原子性
  • 实时性

Leader

  • 事物请求(写操作)的唯一调度和处理者

Follower

  • 处理非事物(读操作)请求,转发事物请求给Leader
  • 参与集群Leader选举投票

数据模型

  • 与标准文件系统类似,采用树形结构,每个节点称之为Znode,根节点为 /
  • Znode兼具文件夹和文件的特点,既可以存储数据(data),也可以有子Znode(children)
  • Znode具有原子性操作
  • Znode存储数据大小至多为1M
  • Znode通过路径进行引用,必须是绝对路径

Znode的节点类型

  • 临时节点
  • 永久节点
  • 序列化节点:给指定节点增加序列号

Leader选举机制

Zookeeper选举机制有几种类型? - 简书 (jianshu.com)

watch机制

  • zk通过watch机制来实现分布式通知

  • 可以给Znod注册watch机制,如果触发了对应的事件,会监听到

  • 可以触发的时间有很多,节点创建、节点删除、节点改变、子节点改变等等

  • watch机制:一次性触发,先注册再触发

应用场景

Zookeeper基本功能和应用场景 - 简书 (jianshu.com)