Zookeeper-ZAB协议

paxos协议主要就是如何保证在分布式环网络环境下,各个服务器如何达成一致最终保证数据的一致性问题

ZAB协议,基于paxos协议的一个改进。

zab协议为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议

zookeeper并没有完全采用paxos算法, 而是采用zab Zookeeper atomic broadcast

zab协议的原理

  1. 在zookeeper 的主备模式下,通过zab协议来保证集群中各个副本数据的一致性
  2. zookeeper使用的是单一的主进程来接收并处理所有的事务请求,并采用zab协议,

把数据的状态变更以事务请求的形式广播到其他的节点

  1. zab协议在主备模型架构中,保证了同一时刻只能有一个主进程来广播服务器的状态变更
  2. 所有的事务请求必须由全局唯一的服务器来协调处理,这个的服务器叫leader,其他的叫follower

leader节点主要负责把客户端的事务请求转化成一个事务提议(proposal),并分发给集群中的所有follower节点

再等待所有follower节点的反馈。一旦超过半数服务器进行了正确的反馈,那么leader就会commit这条消息

崩溃恢复

原子广播

zab协议的工作原理

  1. 什么情况下zab协议会进入崩溃恢复模式
  2. 当服务器启动时
  3. 当leader服务器出现网络中断、崩溃或者重启的情况
  4. 集群中已经不存在过半的服务器与该leader保持正常通信
  5. zab协议进入崩溃恢复模式会做什么

zab协议进入崩溃恢复模式会做什么

  1. 当leader出现问题,zab协议进入崩溃恢复模式,并且选举出新的leader。当新的leader选举出来以后,如果集群中已经有过半机器完成了leader服务器的状态同(数据同步),退出崩溃恢复,进入消息广播模式
  2. 当新的机器加入到集群中的时候,如果已经存在leader服务器,那么新加入的服务器就会自觉进入数据恢复模式,找到leader进行数据同步

问题

假设一个事务在leader服务器被提交了,并且已经有过半的follower返回了ack。 在leader节点把commit消息发送给folower机器之前

leader服务器挂了怎么办

zab协议,一定需要保证已经被leader提交的事务也能够被所有follower提交

zab协议需要保证,在崩溃恢复过程中跳过哪些已经被丢弃的事务

原文地址:https://www.cnblogs.com/yintingting/p/6576597.html