分布式原理与工程 —— 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/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 4,633评论 2 26
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 作者:狼-志链接:http://www.cnblogs.com/gowhy/archive/2012/12/28/...
    jsondream阅读 1,545评论 2 6
  • 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能...
    isgiker阅读 630评论 0 5
  • 《锡尔斯玛利亚》的开始就吸引了我,平淡无奇的故事和演绎莫名的打动了我,让自己内心沉静了一些。 《锡尔斯玛利亚》也...
    Liyingying阅读 446评论 0 0