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一致性协议的更多相关文章

  1. 分布式系统的一致性协议之 2PC 和 3PC

    在分布式系统领域,有一个理论,对于分布式系统的设计影响非常大,那就是 CAP 理论,即对于一个分布式系统而言,它是无法同时满足 Consistency(强一致性).Availability(可用性) ...

  2. zookeeper中的分布式一致性协议

    1. zookeeper中的一致性协议-ZAB协议 在深入了解ZK之前,相信很多同学都会认为ZK就是Paxos算法的一个实现.但事实上,ZK并没有完全采用Paxos算法,而是使用了一种称为ZooKee ...

  3. Zookeeper——分布式一致性协议及Zookeeper Leader选举原理

    文章目录 一.引言 二.从ACID到CAP/BASE 三.分布式一致性协议 1. 2PC和3PC 2PC 发起事务请求 事务提交/回滚 3PC canCommit preCommit doCommit ...

  4. Raft一致性协议

    分布式存储系统通常通过维护多个副本来进行fault-tolerance,提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性.一致性协议就是用来干这事的 ...

  5. 三:分布式事务一致性协议2pc和3pc

    一:分布式一致性协议--->对于一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议.--->长期探索涌现出一大批经典的一 ...

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

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

  7. 分布式一致性协议Raft原理与实例

    分布式一致性协议Raft原理与实例 1.Raft协议 1.1 Raft简介 Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法.目前,在各种主流语言中都有 ...

  8. 多线程之:MESI-CPU缓存一致性协议

    MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用 ...

  9. 【并发编程】MESI--CPU缓存一致性协议

    原文:多线程之:MESI-CPU缓存一致性协议 概念 MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一 ...

随机推荐

  1. LeetCode - 3. Longest Substring Without Repeating Characters(388ms)

    Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...

  2. PAT——甲级1012:The Best Rank(有坑)

    1012 The Best Rank (25 point(s)) To evaluate the performance of our first year CS majored students, ...

  3. JAVA课程设计 俄罗斯方块

    俄罗斯方块 可实现功能 1.账号管理:登录.注册 2.游戏实现:移动.旋转.消除方块统计得分.暂停游戏.暂停后继续游戏.此轮游戏未结束开启新一轮游戏.游戏未结束退出游戏. 3.排行榜:按分数排名.按局 ...

  4. 结对作业 -GUI四则运算

    目录: 一.前言(及项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模块 ...

  5. PokeCats开发者日志(三)

      现在是PokeCats游戏开发的第四天的晚上,明天要过周末了,所以提前写一下开发者日志吧! day4   day4主要是优化界面和增加游戏可玩性.   (1)感觉只有三只喵喵的话,玩家只需要无脑点 ...

  6. Chromium多进程资源加载

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 多进程 资源的实际加 ...

  7. C#怎么调用方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Exep ...

  8. BZOJ4513 SDOI2016储能表(数位dp)

    如果n.m.k都是2的幂次方,答案非常好统计.于是容易想到数位dp,考虑每一位是否卡限制即可,即设f[i][0/1][0/1][0/1]为第i位是/否卡n.m.k的限制时,之前的位的总贡献:g[i][ ...

  9. 【题解】HAOI2012高速公路

    一节政治课的结果……推式子+推式子+推式子…… 首先注意到一个区间里面,选择(x, y)和(y, x)的费用是一样的.所以我们把这两种情况合为一种,那么现在询问的区间为(l, r),则一共的情况就有 ...

  10. Vue根据URL传参来控制全局 console.log 的开关

    如果你的项目中console.log了很多信息,但是发到生产环境上又不想打印这些信息,这时候就需要设置一个全局变量,如:debug, 用正则匹配一下参数: const getQueryStr = (n ...