分布式系统原理 之4 Quorum 机制

本文深入探讨分布式系统中的Quorum机制,分析了Write-all-read-one策略和Quorum定义,强调了其在确保数据一致性和服务可用性中的作用。Quorum通过控制更新操作的副本数量,权衡了更新服务和读取服务的可用性。同时,文中提到了Quorum在GFS、Dynamo、Zookeeper等系统中的实现和应用。
摘要由CSDN通过智能技术生成

分布式系统原理

Quorum 机制

Quorum 机制是一种简单有效的副本管理机制。本节首先讨论一种最简单的副本控制规则write-all-read-one,在此基础上,放松约束,讨论 quorum 机制。

1. 约定

为了简化讨论,本节先做这样的约定:更新操作(write)是一系列顺序的过程,通过其他机制确定更新操作的顺序(例如 primary-secondary 架构中由 primary 决定顺序),每个更新操作记为 w i ,i 为更新操作单调递增的序号,每个 w i 执行成功后副本数据都发生变化,称为不同的数据版本,记作 v i 。假设每个副本都保存了历史上所有版本的数据。

2. Write-all-read-one

Write-all-read-one(简称 WARO)是一种最简单的副本控制规则,顾名思义即在更新时写所有的副本,只有在所有的副本上更新成功,才认为更新成功,从而保证所有的副本一致,这样在读取数据时可以读任一副本上的数据。

  • 假设有一种 magic 的机制,当某次更新操作 w i 一旦在所有 N 个副本上都成功,此时全局都能知道这个信息,此后读取操作将指定读取数据版本为 v i 的数据,称在所有 N 个副本上都成功的更新操作为“成功提交的更新操作”,称对应的数据为“成功提交的数据”。在 WARO 中,如果某次更新操作 w i 在某个副本上失败,此时该副本的最新的数据只有 v i-1 ,由于不满足在所有 N 个副本上都成功,则 w i 不是一个“成功提交的更新操作”,此时,虽然其他 N-1 个副本上最新的数据是 v i ,但 v i 不是一个“成功提交的数据”,最新的成功提交的数据只是 v i-1 。

  • 分析一下 WARO 的可用性。由于更新操作需要在所有的 N 个副本上都成功,更新操作才能成功,所以一旦有一个副本异常,更新操作失败,更新服务不可用。对于更新服务,虽然有 N 个副本,但系统无法容忍任何一个副本异常。另一方面,N 个副本中只要有一个副本正常,系统就可以提供读服务。对于读服务而言,当有 N 个副本时,系统可以容忍 N-1 个副本异常。

  • 从上述分析可以发现 WARO 读服务的可用性较高,但更新服务的可用性不高,甚至虽然使用了副本,但更新服务的可用性等效于没有副本。

  • WARO 牺牲了更新服务的可用性,最大程度的增强读服务的可用性。

    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值