• Zookeeper分布式一致性协议ZAB源码剖析


    1、ZAB协议介绍

    ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。
    Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议,ZAB是Paxos算法的一种简化实现。
    ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 的协议。下面我们会重点讲这两个东西。
    基于该协议,Zookeeper 实现了一种 主备模式 的系统架构来保持集群中各个副本之间数据一致性。具体如下图所示:
    在这里插入图片描述

    上图显示了 Zookeeper 如何处理集群中的数据。所有客户端写入数据都是写入到Leader节点,然后,由 Leader 复制到Follower节点中,从而保证数据一致性。
    那么复制过程又是如何的呢?复制过程类似两阶段提交(2PC),ZAB 只需要 Follower(含leader自己的ack) 有一半以上返回 Ack 信息就可以执行提交,大大减小了同步阻塞。也提高了可用性。
    简单介绍完,开始重点介绍 消息广播 和 崩溃恢复。整个 Zookeeper 就是在这两个模式之间切换。 简而言之,当 Leader 服务可以正常使用,就进入消息广播模式,当 Leader 不可用时,则进入崩溃恢复模式。

    2、消息广播

    ZAB 协议的消息广播过程使用的是一个原子广播协议,类似一个 两阶段提交过程。对于客户端发送的写请求,全部由 Leader 接收,Leader 将请求封装成一个事务 Proposal,将其发送给所有 Follwer ,然后,根据所有 Follwer 的反馈,如果超过半数(含leader自己)成功响应,则执行 commit 操作。

  • 相关阅读:
    Python 初学者容易踩的 5 个坑
    「组合数学」隔离区
    TIM1计数模式
    仿大众点评——秒杀系统部分04——Redis缓存措施
    c++的字节序与符号位的问题
    R语言-tidyr和dplyr
    Java基础(程序控制结构篇)
    2. NLP基础 : 分词
    网络编程套接字(3)——协议定制 | 序列化与反序列化
    sqlserver 联表查询、子查询、窗口函数、聚合函数等概念与例子
  • 原文地址:https://blog.csdn.net/beautybug1126/article/details/133775817