ZAB协议

本文介绍了ZAB协议的主要流程,包括Leader选举、数据同步和消息广播。重点解释了数据同步的不同方式,如DIFF、TRUNC+DIFF、TRUNC及SNAP同步,并对比了ZAB与Paxos协议的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要流程

ZAB协议主要分为三部分:Leader选举、数据同步和消息广播,其中Leader选举和数据同步属于崩溃恢复模式,消息广播属于消息广播模式,如下图所示。
这里写图片描述

Leader选举

触发时机
  1. 服务端集群启动;
  2. Leader宕机或重启;
  3. 网络异常;Leader与多半机器心跳异常后会自动降级,重新选举;Follower与Leader心跳异常后,重新选举;

数据同步

目的

保障集群中过半的机器与Leader服务器的数据一致;

触发时机
  1. 新Leader产生;
  2. Follower新增、重启或网络异常等;
同步分类
  1. DIFF同步,当minCommittedLog < peerLastZxid < maxCommittedLog,且peerLastZxid事务在Leader存在时触发;
  2. TRUNC+DIFF同步,当minCommittedLog < peerLastZxid < maxCommittedLog,但peerLastZxid事务在Leader不存在时触发;
  3. TRUNC同步,当peerLastZxid > maxCommittedLog时触发;
  4. SNAP同步,当peerLastZxid < minCommittedLog或新增Follower时触发;

消息广播

简化的二阶段提交,Leader先接受所有的写请求,封装成事务,然后广播给其它机器,过程如下图所示:
这里写图片描述

阶段一:事务执行

Leader广播Proposal到所有的Follower,Follower要么接受Proposal返回ACK,要么抛弃Proposal,如果Leader收到的ACK过半则进入阶段二;

阶段二:事务提交

Leader广播Commit消息到所有的Follower,且自身完成事务的提交;

ZAB协议 VS Paxos协议

与Paxos协议相比,ZAB协议增加了“数据同步”逻辑,确保主备架构下的数据一致性,Leader选举和消息广播思想与Paxos相同。

参考:

  1. https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab+vs.+Paxos;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值