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. LuoguP1286 两数之和

    题面概括 将n个数两两相加得到n*(n-1)/2个和,给出这些和,求所有原数方案 n<=500 LuoguP1286 题解 此题原题是 n<10, 没啥可做的 先将 \(n*(n-1)/2 ...

  2. Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON字符串增加额外字段 假如我们有这样结 ...

  3. Docker(8)- docker search 命令详解

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 从 Docker Hub ...

  4. 庐山真面目之二微服务架构NGINX版本实现

    一.简介          在上一篇文章<庐山真面目之微服务的简介和技术栈>中,我们已经探讨了微服务的来龙去脉,也说了想要实现微服务架构所需要的技术栈,今天我们开始实现一个微服务,当然这个 ...

  5. 9_Palindrome Number

    9.Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome when it ...

  6. JavaScript之构造函数

    在学习构造函数之前我们需要知道我们学习构造函数需要学习什么: 1.什么是构造函数  2.构造函数用来做什么 3.构造函数的执行过程  4.构造函数的返回值 1.所以首先我们需要知道什么是构造函数: 在 ...

  7. leetcode7:binary-tree-preorder-traversal

    题目描述 求给定的二叉树的前序遍历. 例如: 给定的二叉树为{1,#,2,3}, 1   \    2   / 3 返回:[1,2,3]. 备注:用递归来解这道题太没有新意了,可以给出迭代的解法么? ...

  8. 谈谈synchronized

    为什么要用synchronized关键字: synchronized是java的一种内部锁,是一种排他锁,通常也被称为悲观锁,它能够保障原子性,可见性,有序性. 当多个线程去调用同一个方法的时候,如果 ...

  9. 生活tips_织毛衣

    生梨润肺化痰好,苹果止泻营养高. 黄瓜减肥有成效,抑制癌症猕猴桃. 番茄补血助容颜,莲藕除烦解酒妙. 橘子理气好化痰,韭菜补肾暖膝腰. 萝卜消食除胀气,芹菜能治血压高. 白菜利尿排毒素,菜花常吃癌症少 ...

  10. Docker - 解决同步容器与主机时间报错:Error response from daemon: Error processing tar file(exit status 1): invalid symlink "/usr/share/zoneinfo/UTC" -> "../usr/share/zoneinfo/Asia/Shanghai"

    问题背景 这里讲解了如何同步容器和主机的时间:https://www.cnblogs.com/poloyy/p/13967532.html 其中使用方法二 docker cp /etc/localti ...