0%

zookeeper集群结构

zookeeper集群结构

zookeeper参考了Paxos协议,设计了Zab协议

Zab协议

zookeeper采用的Zab协议(ZooKeeper Atomic Broadcast,ZooKeeper原子广播协议),Zab协议分为两个阶段:Leader Election领导选举和Atomic Broadcast原子广播

基于Zab协议,zookeeper实现了一种主备模式(Leader、Follower)的系统架构来保持集群中各副本之间的数据一致性,使得zookeeper成为了解决分布式数据一致性问题的解决方案

zookeeper中有三种类型的节点leader、follower、observer(follower、observer属于learner)
分为三个步骤

  • Leader包装写请求,生成唯一zxid,发起提议,广播给所有Follower
  • Follower收到提议后,写入本地事务日志,根据自身情况,是否同意该事务的提交
  • Leader收到过半的follower同意,自己先添加事务。然后对所有的learner节点发送提交事务请求

领导选举

当zookeeper集群启动时,会选举出一个节点为Leader,其他节点为Follower。如果Leader挂了之后,会从follower中选举出新的Leader(谁的数据最新,谁就有优先被选为Leader的资格【比较事务id】),并让所有节点恢复到一个正常的状态

原子广播

领导选举阶段完成之后,就会进入原子广播阶段,同步Leader节点和各个Follower节点之间的数据,确保Leader和Follower节点具有相同的状态,所有的写操作都会发送到Leader节点,并通过广播的方式将数据同步到其他Follower节点

集群

zookeeper集群中的每个节点都会在内存中维护当前服务器状态,并且每个节点之间都会保持童心,只要集群中存在超过半数以上的节点可以正常工作,那么整个集群就可以正常的提供服务