ZAB协议

前言

为了解决分布式服务下,各个服务器达成最终一致性的问题。ZAB协议是基于paxos协议的一个改进。这里有一个拜占庭问题。ZAB专门为分布式协调服务zookeeper专门设计的一种支持崩溃回复的原子广播协议,zookeeper并没有完全采用paxos协议(paxos有些复杂)。

ZAB协议原理

1、在zookeeper的主备模式下,通过zab协议来保证集群中各个副本数据的一致性
2、zookeeper使用单一的主进程来接受并处理所有事务请求,并采用zab协议,把数据的状态变更以事务请求的形式广播到其他节点
3、zab协议在主备模型架构中,保证了统一时刻只能有一个主进程来广播服务器的状态变更
4、所有的事务请求必须由全局唯一的服务器来系诶套处理,这个服务器叫leader,其他的叫follower
leader节点负责把客户端的事务请求转化为一个事务提议(proposal),并分发给集群中的所有follower节点,在等待所有follower节点的反馈。一旦超过半数服务器进行了正确反馈,那么leader就会commit这条消息。

工作原理
1、什么情况下zab协议会进入崩溃回复模式?

  1. 当服务器启动时
  2. 当leader服务器出现网络中断、崩溃或者重启的情况
  3. 集群中已经不存在过半的服务器与leader保持正常通信

2、zab协议进入崩溃回复模式会做什么?

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

问题
假设一个事务在leader服务器被提交了,并且已经有过半数的follower返回了ack,在leader节点把commit消息发送给follower机器之前,leader服务器挂了怎么办?

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值