分布式原理与工程 —— Quorum机制

Quorum机制是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法 其主要数学思想来源于鸽巢原理1

Quorum机制定义

我们普遍使用副本(Replication)技术来保证一致的性能和高可用性2,Quorum是一种简单有效的管理副本的机制,我们先建立如下定以([2]中也有描述):

N = 存储数据副本的节点的数量
W = 更新成功所需的副本更新成功的数量
R = 一次数据对象读取要访问的副本的数量

更新时,只有至少W副本更新成功时才算更新操作成功;读取时,至少要读取R个副本的数据。这样当W + R > N时,对于同一个数据对象,更新集合与读取集合一定有重叠,保证了读取的数据中一定有最近更新的值。

WARO (Write All Read One)

WARO是Quorum机制的特例(GFS使用WARO),也就是更新时必须所有的副本都更新成功,而读取 时只需要读取一个副本的数据就可以。

Quorum机制与一致性

Quorum本身无法保证强一致性,除非有一个获取最新成功提交的版本号的metadata服务;假设$N = 5, W = 3, R = 3$,数据V2提交成功但是只在三个副本真正更新了,副本中数据分布是[V2, V2, V2, V1, V1],那么客户端可能读到[V2, V2, V1],也可能读到[V2, V1, V1];注意这里的版本V1,V2是数据本身的版本号不是最新成功提交的版本号,所以无法确认是V1还是V2;如果要保证强一致性必须继续读取副本,来确定最新至少写入的W个副本也就是提交成功的数据。

参考链接

  1. https://zh.wikipedia.org/wiki/Quorum_(分布式系统)
  2. https://duanmeng.github.io/2017/11/19/Eventually-Consistent%20-%20Revisited/

你可能感兴趣的:(分布式原理与工程 —— Quorum机制)