ZAB协议

作者: matthewfly | 来源:发表于2021-04-12 09:42 被阅读0次

ZAB(Zookeeper Atomic Broadcast)协议,即原子广播协议用于zookeeper实现分布式事务的一致性。
ZAB协议将zookeeper集群状态分为两个类型:崩溃恢复、消息广播。

  • 消息广播
    消息广播即正常接收处理客户端请求,相当于一个简化的二阶段提交协议。
    首先leader为每个事务生成一个proposal,将其发给所有的follower,follower收到proposal后先写日志,然后返回ack。leader在收到过半ack就提交事务,并向所有follower发送commit消息,follower收到消息后执行事务提交。
    为了保证事务的顺序性,同时避免同步阻塞,leader为每个follower维护了一个消息队列。leader向消息队列顺序写消息,follower从消息队列获取消息并顺序性的执行。
    消息广播解决了二阶段协议的阻塞问题,但仍存在单点问题和宕机时的一致性问题,这个就要崩溃恢复来解决。
  • 崩溃恢复
    当leader不可用或者与超过半数follower断开链接后,集群将进入崩溃恢复模式。
    该模式下ZAB要确保两点:
    1.在leader上提交的事务必须在所有服务器要提交
    2.必须丢弃只在leader上提出的事务

实现以上两点就能保证崩溃时的数据一致性,怎么实现的呢?
实际上ZAB为集群中每个事务都分配了一个64位的唯一事务zxid,该zxid高32位是leader的epoch严格递增计数,低32位是该leader epoch周期每个事务严格递增计数。在leader选举时,优先选举zxid最大的作为leader就能保证leader包含集群中所有已提交事务(两次过半集合必定存在交集)。数据同步时,将新选举的leader事务同步给其他follower就可以完成数据一致性。

那么旧的leader恢复后重新加入集群,其未完成提交的事务会影响嘛?
不会,因为新选举的leader epoch更大。宕机的旧leader重新加入时,校验其epoch不统一,其为提交的事务也将进行丢弃。

相关文章

  • Zookeeper——一致性协议:Zab协议

    什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 消息广播 崩溃恢复 如...

  • Zookeeper ZAB协议

    什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如...

  • zookeeper zab协议(二)

    zookeeper zab协议 zab协议概述 ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种...

  • Zookeeper之ZAB协议

    Zookeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)。ZAB 协议是...

  • Zookeeper ZAB协议分析

    1. ZAB协议 ZAB协议(Zookeeper Atomic Broadcast Protocol)是Zooke...

  • ZAB协议理解参考

    ZAB协议概要 一) ZAB协议是专门为ZooKeeper实现分布式协调功能而设计。ZK主要是依据ZAB协议来实现...

  • ZAB协议要点

    ZAB(ZooKeeper Atomic Broadcast)协议是ZooKeeper的核心协议。 ZAB有哪些阶...

  • Zookeeper ZAB协议

    [TOC] 什么是Zab协议? Zab协议 的全称是 Zookeeper Atomic Broadcast (Zo...

  • zookeeper随笔 - 一致性及选举算法

    zookeeper保持数据一致性是通过Zab协议实现的。 ZAB协议 ZAB全称是Zookeeper Atomic...

  • ZAB协议介绍1

    ZAB协议介绍 ZooKeeper服务的内部通信基于ZAB协议,即ZooKeeper Atomic Broadca...

网友评论

      本文标题:ZAB协议

      本文链接:https://www.haomeiwen.com/subject/ifmtlltx.html