Quorum一致性协议
Quorum一致性协议
一个分布式数据库系统中通常是一系列密切关联的操作组成完整的系统. 分布式系统最基本的要保证一致性, 分区性通常是无法避免的, 在这种情况下尽力通过软件协议做到最大可用性. 根据CAP理论知道三者往往不可以兼得, 只能取其二.
回忆下CAP理论
C
Consistency: 保证返回客户端最新的一致性数据
A
Availablility: 任何一个没有发生故障的节点必须在有限的时间内返回结果
P
Paritition Tolerance: 网络分区发生时系统依然可以提供服务
也既是在分布式系统中CP的情况下, 如何通过软件/协议逻辑控制尽可能的满足A
在这里很重要的一点就是C协议, 怎么样做到分布式系统中所有的节点都同意就某一个值性能更新?
2PC/3PC/Paxos...都是来解决这个问题的方案, 甚至Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法, 那就是Paxos, 其它的算法都是残次品.
不过今天暂且不讨论Paxos, 来看看Quorum一致性协议是怎么做的.
基本的Quorum协议要求所有参与者应用一项决议前必须先同意. 假如一个分布式的DB系统, 有两个节点A和B, 数据在A和B之前完成复制, 任何一个节点的数据变更都会在一定的时间内同步到另外的节点. 客户端无需感知底层的DB系统是否是分布式的, 它所要关系的是无论连接到哪一个节点, 都应该读取到相同的数据(同一状态).
DB系统主要由两类操作: write/update 和 read
R表示Quorum中read节点的数量
W表示Quorum中writes/updates节点的数量
N表示系统中的节点数量
如果R=1, W=1, 也就是R+W=N=2, 客户端在A节点进行写入, 从B节点完成读取, 这种情况下客户端可能无法得到一致性的数据;
如果R=2, W=1, 也就是R+W>N, 客户端可以在任意的A或者B节点进行写入, 但是客户端需要同时读取节点A和B的数据, 这种情况是可以保证客户端得到最新的数据状态, 这也就是一些NOSQL DB通常说的双读(read repair);
如果W=2, R=1, 也就是R+W>N, 显而易见这种情况下客户端同时写入节点A和B, 读取任意一份数据即可满足一致性结果要求.
R+W>N, 这就是Quorum一致性协议.
Quorum一致性协议的更多相关文章
- 分布式系统的一致性协议之 2PC 和 3PC
在分布式系统领域,有一个理论,对于分布式系统的设计影响非常大,那就是 CAP 理论,即对于一个分布式系统而言,它是无法同时满足 Consistency(强一致性).Availability(可用性) ...
- zookeeper中的分布式一致性协议
1. zookeeper中的一致性协议-ZAB协议 在深入了解ZK之前,相信很多同学都会认为ZK就是Paxos算法的一个实现.但事实上,ZK并没有完全采用Paxos算法,而是使用了一种称为ZooKee ...
- Zookeeper——分布式一致性协议及Zookeeper Leader选举原理
文章目录 一.引言 二.从ACID到CAP/BASE 三.分布式一致性协议 1. 2PC和3PC 2PC 发起事务请求 事务提交/回滚 3PC canCommit preCommit doCommit ...
- Raft一致性协议
分布式存储系统通常通过维护多个副本来进行fault-tolerance,提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性.一致性协议就是用来干这事的 ...
- 三:分布式事务一致性协议2pc和3pc
一:分布式一致性协议--->对于一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议.--->长期探索涌现出一大批经典的一 ...
- Zookeeper的一致性协议:Zab(转)
Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量 ...
- 分布式一致性协议Raft原理与实例
分布式一致性协议Raft原理与实例 1.Raft协议 1.1 Raft简介 Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法.目前,在各种主流语言中都有 ...
- 多线程之:MESI-CPU缓存一致性协议
MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用 ...
- 【并发编程】MESI--CPU缓存一致性协议
原文:多线程之:MESI-CPU缓存一致性协议 概念 MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一 ...
随机推荐
- mongoDB 常用操作CRUD
1.显示所有的数据库 show dbs 2.切换数据库(如果没有数据库,即是创建数据库) use 数据库名称 3.显示所有的表 show tables 4.查看数据库里的表 show co ...
- Liz问题账户分析系统
1.理解liz工作情况,了解liz的问题,具有同理心.设想软件应该达成的目标,解决哪些业务. 第一步:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的 ...
- iOS银联,支付宝,微信,ping++开发文档
银联支付 银联支付目测只需两个参数 1.tn 其实就是订单号 2.mode 是测试环境还是线上环境 开发步骤 1.首先客户端浏览商品,点击下单,请求到达商户后台 2.商户后台在提交订单信息到银联后台 ...
- 用WebService实现两个整数运算
最近,项目开发中需要用到Web Service.自己在网上搜集资料.自己做了一个小例子,用来加深自己对Web Service理解. 概念:Web Service主要是为了使原来各孤立的站点之间的信息能 ...
- [bzoj3004] [SDOi2012]吊灯
Description Alice家里有一盏很大的吊灯.所谓吊灯,就是由很多个灯泡组成.只有一个灯泡是挂在天花板上的,剩下的灯泡都是挂在其他的灯泡上的.也就是说,整个吊灯实际上类似于[b]一棵树[/b ...
- MFC 相关类、函数
timeSetEvent()函数 CRectTracker类的使用 SetLocalTime设置本地时间 AdjustTokenPrivileges启用权限
- CF763E Timofey and our friends animals
题目戳这里. 首先题解给的是并查集的做法.这个做法很好想,但是很难码.用线段树数来维护并查集,暴力合并. 这里推荐另一个做法,可以无视\(K\)的限制.我们给每条边加个边权,这个边权为这条边左端点的值 ...
- 禁止 iphone 网页上下拖动露底
document.addEventListener('touchmove', function(e) { e.preventDefault();});
- javascript中Date使用总结(转)
//全局函数 Date //Date 类的静态方法 Date.parse Date.UTC //Date 对象的建立方法 new Date() new Date(毫秒数) new Date(标准时间格 ...
- bootstrap再次回顾认识到的东西
1,需要使用html5文档类型(Doctype),因此在使用bootstrap项目的开头包含下面的代码段. <!DOCTYPE html> <html> ....... < ...