Zookeeper的一致性协议:Zab
Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量、低延迟、健壮、简单,但不过分要求其扩展性。下面将展示一些该协议的核心内容:
另,本文仅讨论Zookeeper使用的一致性协议而非讨论其源码实现
Zookeeper的实现是有Client、Server构成,Server端提供了一个一致性复制、存储服务,Client端会提供一些具体的语义,比如分布式锁、选举算法、分布式互斥等。从存储内容来说,Server端更多的是存储一些数据的状态,而非数据内容本身,因此Zookeeper可以作为一个小文件系统使用。数据状态的存储量相对不大,完全可以全部加载到内存中,从而极大地消除了通信延迟。
Server可以Crash后重启,考虑到容错性,Server必须“记住”之前的数据状态,因此数据需要持久化,但吞吐量很高时,磁盘的IO便成为系统瓶颈,其解决办法是使用缓存,把随机写变为连续写。
考虑到Zookeeper主要操作数据的状态,为了保证状态的一致性,Zookeeper提出了两个安全属性(Safety Property)
- 全序(Total order):如果消息a在消息b之前发送,则所有Server应该看到相同的结果
- 因果顺序(Causal order):如果消息a在消息b之前发生(a导致了b),并被一起发送,则a始终在b之前被执行。
- Atomic Broadcast
- Leader选举
1. Atomic Broadcast
- 因为只有一个Leader,Leader提交到Follower的请求一定会被接受(没有其他Leader干扰)
- 不需要所有的Follower都响应成功,只要一个多数派即可
2. Leader Election
- 老Leader在COMMIT前Crash(已经提交到本地)
- 老Leader在COMMIT后Crash,但有部分Follower接收到了Commit请求
3. Zab与Paxos
Because multiple leaders can propose a value for a given instance two problems arise. First, proposals can conflict. Paxos uses ballots to detect and resolve conflicting proposals. Second, it is not enough to know that a given instance number has been committed, processes must also be able to figure out which value has been committed.
- 之前的Phase2
- Learn
4.结束
- A simple totally ordered broadcast protocol
- paxos
http://blog.csdn.net/chen77716/article/details/7309915
Zookeeper的一致性协议:Zab相关推荐
- 【Zookeeper】Zookeeper一致性协议——ZAB
Zookeeper一致性协议--ZAB ZAB协议简介 Zookeeper通过ZAB保证分布式事务的最终一致性. ZAB全称Zookeeper Atomic Broadcast(ZAB,Zookeep ...
- 面试官问:ZooKeeper 一致性协议 ZAB 原理
2019独角兽企业重金招聘Python工程师标准>>> 一致性协议有很多种,比如 Paxos,Raft,2PC,3PC等等,今天我们讲一种协议,ZAB 协议,该协议应该是所有一致性协 ...
- Zookeeper——一致性协议:Zab协议
转自:https://www.jianshu.com/p/2bceacd60b8a 什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何 ...
- 一致性协议浅析:从逻辑时钟到Raft
前言 春节在家闲着没事看了几篇论文,把一致性协议的几篇论文都过了一遍.在看这些论文之前,我一直有一些疑惑,比如同样是有Leader和两阶段提交,Zookeeper的ZAB协议和Raft有什么不同,Pa ...
- Zookeeper一致性协议原理Zab
转载自 Zookeeper一致性协议原理Zab ZooKeeper为高可用的一致性协调框架,自然的ZooKeeper也有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法, ...
- 超详细解析 | 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/VMW9 背景 在常见的分布式系统中, ...
- 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析
背景 在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟.丢失.重复.乱序,还有网络分区)等情况. 一致性算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地 ...
- 分布式理论(七):一致性协议之 ZAB
前言 在前面的文章中,我们说了很多一致性协议,比如 Paxos,Raft,2PC,3PC等等,今天我们再讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了.为什么呢?因为他是 ...
- 分布式理论(七): 一致性协议之 ZAB
前言 在前面的文章中,我们说了很多一致性协议,比如 Paxos,Raft,2PC,3PC等等,今天我们再讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了.为什么呢?因为他是 ...
最新文章
- android 反编译_Android 反编译实战
- 纯干货:CMOS图像传感器产业趋势和主要厂商
- 第一个python命令
- J.U.C系列(一)CountDownLatch的使用
- 解决XML中报“cvc-complex-type.2.4.a: Invalid content was found starting with element ”错误
- 图的遍历——深度优先搜索+广度优先搜索
- Linux学习笔记-Makefile优化之头文件依赖
- myeclipse jsp头
- php操作excel表格的导入和导出
- 浅析小米登录/注册页面(原生)
- a 标签 jq js 打开新页面跳转
- VMware卸载不干净导致安装VMware报错(无法安装服务vmware Authorization server请确保你有足够的权限)
- 会声会影如何使用覆叠滤镜
- bootbox.confirm 官方例子 网址
- idea设置主题风格
- java支付宝原理_java支付宝支付原理及其问题点
- python语音识别 开源_DaCiDian是一个开源的中文普通话词汇,用于自动语音识别(ASR)...
- 【CXY】JAVA基础 之 Runtime
- 项目里的UT越来越慢,怎么办?
- 串灯控制盒去掉怎么接_彩灯控制器怎么接线
热门文章
- python123百钱买百鸡_day01笔记-百钱买百鸡(100文钱,必须买100只鸡,有几种方式)
- mysql调优explain_MySql性能调优利器之Explain
- 14_python基础—匿名函数lambda表达式
- linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解
- jsp mysql模板_jsp的分页查询的代码(mysql数据库)
- java 8 lambda reduce_java8种的reduce方法和lambda表达式结合使用
- 未能加载文件或程序集mysql.web.v20__关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20...
- 尝试使用Bouml创建用例图
- VB案例:宁越电子琴
- 11.频域里的卷积——平滑和模糊,2D例子,低通和高通滤波器_2