分享

Quorum NWR

 亚典波罗的收藏 2012-07-05

Quorum NWR

六月 22nd, 2010 · No Comments · 未分类

作者: 阎斌 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息
网址: http://UltimateArchitecture.net

NWR是一种在分布式存储系统中用于控制一致性级别的一种策略。在Amazon的Dynamo云存储系统中,就应用NWR来控制一致性。

让我们先来看看这三个字母的含义:

N:同一份数据的Replica的份数
W:是更新一个数据对象的时候需要确保成功更新的份数
R: 读取一个数据需要读取的Replica的份数

NWR值的不同组合会产生不同的一致性效果,当W+R>N的时候,整个系统对于客户端来讲能保证强一致性。当W+R<N的时候只能保证最终一致性。

以常见的N=3、W=2、R=2为例:

N=3,表示,任何一个对象都必须有三个副本(Replica),W=2表示,对数据的修改操作(Write)只需要在3个Replica中的2个上面完成就返回,R=2表示,从三个对象中要读取到2个数据对象,才能返回。

在分布式系统中,数据的单点是不允许存在的。即线上正常存在的Replica数量是1的情况是非常危险的,因为一旦这个Replica再次错误,就 可能发生数据的永久性错误。假如我们把N设置成为2,那么,只要有一个存储节点发生损坏,就会有单点的存在。所以N必须大于2。N约高,系统的维护和整体 成本就越高。工业界通常把N设置为3。

当W是2、R是2的时候,W+R>N,这种情况对于客户端就是强一致性的。

在上图所示的系统中,由于W等于2,所以更新操作只需要确保完成两份就可以了。无论存储在Node3上面的第三份数据是否完成,都直接返回。假设后 续的操作从Node1和Node3分别读取了两个数据。然而,Node3上面的数据尚未真正完成之前的更新操作。因此,客户端会发现读到的两个版本不一 致,这个时候,只需要选择出最新的数据就可以了。

从不等式中可以看到,当W+R>N的时候,整个系统能够保证R>N-W。也就是说,至少每次都能够读到一份最新的数据。因此只需要把最 新的数据返回即可。所以,虽然服务器上的三份Replica有不一致的情况,对于客户端来讲,每次读到的数据都是最新的。所以这种情况对于客户端来讲是强 一致性的。

另外的几种情况:<N,W,R>=<1,1,1>和单点运行的数据库是同一个配置。<N,W,R>=< 2,1,1>,则相当于Slave-Master模式。由于1+1不大于2,所以这种情况是可能读到非最新数据的。也就是这种配置是不一致的。

W越大,写性能越差。R越大,读性能越差。N越大,数据可靠性就越强。为了保障一致性,平衡读写性能,通常的配置是:W=Q, R=Q ,Q=N/2+1(N=3,R=2,W=2的配置就满足这个公式)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多