zookeeper 学习

应用场景:

  1. 分布式通知,协调
  2. 集群管理
  3. Master 选举
  4. 分布式锁 分布式队列

数据结构

类似于文件系统结构,每一个节点称为ZNode 可以存放数据

架构

  1. 2n+1 个server 当n+1个节点可用时,系统可用
  2. server 角色类型 存放数据 ( leader: 不接受客户端请求负责投票和决议,最终更新状态
  3. follwer:接受客户端请求并返回,参与leader 发起的投票

leader 选举

leader 失去Leader 地位时使用paxos 算法选举

  1. 每一个server向所有server 请求成为leader
  2. 投票超过一半的成为leader ,否则重新执行第一步

数据交互

  • 读:直接 读取client连接的server 的数据
  • 更新 1、 client向server发送请求 2、server向leader发送请求 3、leader发起proposol过程 4、follower反馈结果 5、leader接收响应,如果超过⼀半认为成功,则认为 成功,否则认为失败。并将结果反馈给server 6、server将结果反馈给client

ObServer节点

ObServer节点:和client交互,存有数据的副本,不参与投票

client架构

  1. ClientCnxn:管理 client和ZooKeeper间 的网络连接
  2. WatcherManager:管 理Watcher,如:负 责对ZNode的监控
  3. Zookeeper:Client交 互的主要接⼝,如创 建Znode、更新ZNode

ZooKeeper承诺

顺序性 原⼦性 强⼀致性 可靠性 实时性

叔叔,阿姨给点钱买棒棒糖吃