Quorum机制与NRW算法总结

1.Quorum机制

Quorum,原指为了处理事务、拥有做出决定的权力而必须出席的众议员或参议员的数量(一般指半数以上)

2.NRW算法

NRW算法是基于Quorum机制的是一种个数据副本,至少有一个数据是更新了的。获取其中版本最高的那份数据,即最新的。这样,我们就不必等待所有数据副本全部更新后才去读取数据。把写操作的部分工作转移到了读操作中,使得读写能够在一定程度上达到负载均衡。

3.NRW算法规则

一般我们都会对程序进行优化,即如何实现最小数据备份的情况下,保证数据一致性和读写的均衡? 
     假设需要备份N个数据副本,读操作用R,写操作用W,操作副本用V表示。根据鸽巢原理,要保证操作能获得最新数据。则有以下制约条件。 
     1.Vr+Vw>N即读操作副本量+写操作副本量必须大于数据副本量。这就即保证必定有一个副本是操作之后的值,同时保证了数据副本要么处于W写操作中,要么处于R读操作中。这里的读写状态是针对外部来讲的,分布式环境对外部来说,同一时刻只存在一种操作(容斥定理),相当于读写锁,但比加锁(一种悲观的策略)的方式更加高效。对于分布式环境内部,读和写操作只是部分节点的操作。同时限定了最小读副本数量和最小写副本数量。该策略中,只需要保证R+W>N,就可以保证强一致性。 如果R+W≤N,这时读取和写入操作是不重叠的,系统只能保证最终一致性,而副本达到一致的时间则依赖于系统异步更新的实现方式,不一致性的时间段也就等于从更新开始到所有的节点都异步完成更新之间的时间。 
     2.Vw>N/2 保证了数据的串行化修改。一份数据的冗余拷贝不可能同时被两个写请求修改。如Vw<N/2的时候,就可能存在一部分数据被一个写操作修改,另一部分数据被另一个写操作修改。 
     如图所示,在分布式环境A、B、C、D、E中,根据规则一,那么读写副本量应该至少为6,而现在副本只有5份,则至少有一份C即在读的数据副本中,也在写的数据副本中,才能保证获取到当前时刻最新的数据。规则二,如果Vw<N/2,就像如图所示的A、B写操作和E、D写操作一样,那么这时候整个分布式环境中就存在三种数据,造成数据的不一致性。 

4.读写配置策略

假设N=5, 如果R=1, 那么W必须是5. 所以就是写入所有的节点是全部节点,那么读取任何一个节点就可以最新的数据。 有点就是像读写锁了。 
     如果R=5, 那么W只要是1就可以了。 那么写的效率就非常高。 读取的效率比较低。 
     如果W=N/2+1, R=N/2, 读写之间为达到某个平衡。 是不错的策略。兼顾了性能和可用性,Dynamo系统的默认设置就是这种。 
     R/W的配置的关系决定了哪种操作的开销。

Quorum机制与NRW算法总结的更多相关文章

  1. P2P结构与Quorum机制------《Designing Data-Intensive Applications》读书笔记8

    前文涉及到了很多与Leader相关的算法,大家有木有想过,王侯将相,宁有种乎,既然Leader这么麻烦,干脆还是采用P2P模型吧,来个大家平等的架构.本篇需要和大家探讨的就是多副本下实现民主政治的Qu ...

  2. 分布式入门之2:Quorum机制

    1.  全写读1(write all, read one) 全写读1是最直观的副本控制规则.写时,只有全部副本写成功,才算是写成功.这样,读取时只需要从其中一个副本上读数据,就能保证正确性. 这种规则 ...

  3. 分布式系统理论之Quorum机制

    一,Quorum机制介绍 在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的.因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区.网络通信故障问 ...

  4. 使用map端连接结合分布式缓存机制实现Join算法

    前面我们介绍了MapReduce中的Join算法,我们提到了可以通过map端连接或reduce端连接实现join算法,在文章中,我们只给出了reduce端连接的例子,下面我们说说使用map端连接结合分 ...

  5. 写一致性原理以及quorum机制

    (1)consistency,one(primary shard),all(all shard),quorum(default)我们在发送任何一个增删改操作的时候,比如 PUT /index/type ...

  6. 分布式系统读写模型中的Quorum机制

    分布式系统的设计中会涉及到许多的协议.机制用来解决可靠性问题.数据一致性问题等,Quorum 机制就是其中的一种.我们通过分布式系统中的读写模型来简单介绍它. 分布式系统中的读写模型 分布式系统是由多 ...

  7. 关于NRW算法(Quorum算法)

    在分布式系统中,冗余数据是保证可靠性的手段,因此冗余数据的一致性维护就非常重要.一般而言,一个写操作必须要对所有的冗余数据都更新完成了,才能称为成功结束.比如一份数据在5台设备上有冗余,因为不知道读数 ...

  8. jvm垃圾回收机制和常见算法

    这是朋友给的面试题里边的,具体地址已经找不到,只能对原作者说声抱歉了: 理论上来讲sun公司只定义了垃圾回收机制规则,而步局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同. GC(Gar ...

  9. JVM 垃圾回收机制和常见算法

    垃圾回收机制:释放那些不再持有引用的对象的内存. 如何判断对象是否需要回收? 引用计数:对象,内存,磁盘空间等被引用次数保存起来,次数为0时将其进行释放. 对象引用遍历:对象应用遍历从一组对象开始,沿 ...

随机推荐

  1. 解决ie9以及以下console未定义

    页面明明已经删除了所有的console,但是ie9下依旧会报错 console未定义 只能这样解决了 window.console = window.console || (function () { ...

  2. php 01

    PHP 一.了解php 1.什么是php PHP 超文本预处理器 服务器端的脚本语言  是一种被广泛应用的开放源代码的多用途脚本语言  他可以嵌入到html中 尤其适用web开发 2.php在web中 ...

  3. winform 自适应屏幕分辨率具体操作和注意事项

    第一步:先借助一个类文件 AutoSizeFormClass.cs class AutoSizeFormClass { public struct controlRect { public int L ...

  4. python基础-数据运算

             *按位取反运算规则(按位取反再加1)   详解http://blog.csdn.net/wenxinwukui234/article/details/42119265  详细内容ht ...

  5. 华为服务器操作系统EulerOS V2.0

    平台: linux 类型: 虚拟机镜像 软件包: java-1.8.0 php-5.4.16 python-2.7.5 qt-4.8.5 tomcat-7.0.69 basic software eu ...

  6. Azure School,让你系统化快速学习人工智能

    要说目前最热门的技术,非人工智能莫属了,让计算机程序能够看懂.听懂.读懂.理解我们的世界!想想就激动!! 上至高大上的个人数字化助理,下至P图软件,各种应用都开始增加AI相关的功能,试问又有哪个技术爱 ...

  7. 绿卡基础知识:I-129

    绿卡基础知识:I-129 标签: 绿卡基础知识 I-129 表格本不该你来填的.那是你老板的 business.在美国工作,除非是公民或有绿卡,都需要移民局的批准.如果你没有 EAD,I-129 就是 ...

  8. 利用expect实现自动化操作

    管理机上需要安装expect包 yum -y install expect 1.定义主机ip [root@localhost ~]# cat ip.txt 192.168.1.12 192.168.1 ...

  9. 让你不再害怕指针——C指针详解(经典,非常详细)

    http://blog.csdn.net/soonfly/article/details/51131141 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理 ...

  10. vim 编辑器的使用方法

    vim 命令模式       默认打开文件为命令模式 命令行模式     shift+: 命令行模式 编辑模式       i 编辑模式 Esc 切换命令模式 命令模式 -----字符操作 i   当 ...