ZAB=ZooKeeper Atomic Broadcast

ZooKeeper原子消息广播协议,支持崩溃回复的原子广播协议。

zk使用一个单一的主进程来接受并处理客户端的所有事务请求,并采用ZAB的原子广播协议,将服务器数据的状态变更以事务proposal的形式广播到所有的副本进程上去。

1.ZAB保证同一时刻集群中只能够有一个主进程来广播

2.保证一个全局的变更序列被顺序应用。

ZAB协议的核心定义了对于那些会改变zk服务器数据状态的事务请求的处理方式:

  所有事物请求必须由一个全局唯一的服务器来协调处理,这样的服务器被称为leader服务器,而余下的其他服务器则成为Follower服务器。leader服务器负责将一个客户端事务请求转化成一个事物

Proposal(提议),并将该Proposal分发给集群中所有的follower服务器。之后leader服务器需要等待所有follower服务器的反馈。一旦超过半数的Follower服务器进行了正确的反馈后,那么Leader就会再次向所有的Follower服务器分发commit消息,要求将前一个Proposal进行提交。

这里没有paxos的

第一阶段:提议的选定,因为只有leader才能够发起提议。为了防止并发较大的情况下产生活锁。

而第二阶段和第三阶段 accpet和commit和上面的描述比较相近。

ZAB协议包括两种基本模式:崩溃恢复和消息广播

当整个服务框架在启动过程中,或是当Leader服务器出现网络中断,崩溃退出,与重启等异常情况时,ZAB协议就会进入恢复模式并选举产生新的leader服务器。当选举产生了新的leader服务器,同时集群中已经有过半的机器与该leader服务器完成了状态同步之后。ZAB协议就会退出恢复模式。

当集群中已经有过半的follower服务器完成了和leader服务器的状态同步,那么整个服务框架就可以进入消息广播模式了。

而如果集群中的其他机器接收到客户端的事务请求,那么这些非leader服务器会首先将这个事物请求转发给Leader服务器。

在消息广播过程中,leader服务器会为每一个follower服务器都各自分配一个单独的队列,然后将需要广播的事物proposal依次放入这些队列中去,并且根据FIFO策略进行消息发送。每一个Follower服务器在接收到这个事物Proposal之后,都会首先将其以事务日志的形式写入本地磁盘去。并且在成功写入后反馈给leader服务器一个ack响应。当leader服务器接受到超过半数的follower的ack响应后,就会广播一个commit消息给所有的follower服务器以通知其进行事物提交,同时leader自身也会完成对事务的提交。而每一个follower服务器在接受到commit消息后,也会完成对事务的提交。

ZAB的更多相关文章

  1. 分布式系统理论进阶 - Raft、Zab

    引言 <分布式系统理论进阶 - Paxos>介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议——Raft和Zab.通过与Paxos对比,了解Raft和Zab的核心思想.加 ...

  2. paxos(chubby) vs zab(Zookeeper)

    参考: Zookeeper的一致性协议:Zab Chubby&Zookeeper原理及在分布式环境中的应用 Paxos vs. Viewstamped Replication vs. Zab ...

  3. ZooKeeper之ZAB协议

    ZooKeeper为高可用的一致性协调框架,自然的ZooKeeper也有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法,ZAB(ZooKeeper Atomic Broa ...

  4. 第三章 深入 ZAB 协议

    上一节介绍了ZAB协议的内容,本节将从系统模型.问题描述.算法描述和运行分析四方面来深入了解 ZAB 协议. 系统模型 在一个由一组进程 n ={P1,P2,...Pn}组成的分布式系统中,每一个进程 ...

  5. 第二章 ZAB协议介绍

    ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...

  6. Raft、Zab

    Raft.Zab 引言 <分布式系统理论进阶 - Paxos>介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议--Raft和Zab.通过与Paxos对比,了解Raft和Z ...

  7. Zookeeper的一致性协议:Zab(转)

    Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量 ...

  8. ZAB协议(转)

    转自:http://www.cnblogs.com/sunddenly/articles/4073157.html Zab协议   一.ZooKeeper概述 ZooKeeper内部有一个in-mem ...

  9. Zookeeper ZAB 协议分析

    前言 ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议.在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeep ...

  10. Zab: A simple totally ordered broadcast protocol(译)

    摘要 这是一个关于ZooKeeper正在使用的全序广播协议(Zab)的简短概述.它在概念上很容易理解,也很容易实现,并且提供很高的性能.在这篇文章里,我们会呈现ZooKeeper在Zab上的需求,也会 ...

随机推荐

  1. Spring源码知识概览

    目录 Spring知识总览 1.1 IOC 1.2 Spring中重要接口概览 Spring知识总览 1.1 IOC IOC是控制反转,是一种思想 DI是依赖注入,是控制翻转的一种实现 Spring的 ...

  2. Docker学习—DockerFile

    前言: 上一篇文章简单使用了docker 拉取镜像.启动容器.编译镜像:其中编译镜像时,使用到了Dockerfile,那么接下来我们就详细的来说说Dockerfile DockerFile是什么: D ...

  3. Java学习的第三十一天

    1.使用RandomAccessFile随机读写文件 2.没有问题 3.明天学习综合实例

  4. IOCP 模型2 AcceptEx

    // IOCP2.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...

  5. Photoshop CC 习惯设置

    安装后,一般设置: 1.编辑--首选项--常规 2.一般更改内容为: 性能 内存使用情况在50%-80%之间 暂存盘:除去C盘意外的其他盘 单位和标尺:以px为单位 其他根据喜好设定!

  6. 错误解析:org.apache.catalina.LifecycleException: Protocol handler start failed

    以下是报错代码: org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalin ...

  7. PHP 教程:Composer 最佳实践

    概述 Composer 是 PHP 应用程序的依赖管理器,最初发布于大约 8 年前,2012 年 3 月. 在 php 中使用 Composer 可以提高代码的可重用性,并使你的项目能够轻松地集成来自 ...

  8. ts流中的pcr与pts计算与逆运算

    mpeg2ts文件格式中有pcr和pts的概念,其代码含义如下: PCR(Program Clock Reference)--指示系统时钟本身的瞬时值的时间标签称为节目参考时钟标签(PCR). PTS ...

  9. Thinkphp3.2 cms之登陆模块

    <?php /** * Created by dreamcms. * User: Administrator * Date: 2016/9/5 * Time: 17:15 */ namespac ...

  10. Inception系列之Inception_v1

    目前,神经网络模型为了得到更好的效果,越来越深和越来越宽的模型被提出.然而这样会带来以下几个问题: 1)参数量,计算量越来越大,在有限内存和算力的设备上,其应用也就越难以落地. 2)对于一些数据集较少 ...