当前位置:网站首页>无主复制系统(2)-读写quorum
无主复制系统(2)-读写quorum
2022-07-31 16:31:00 【华为云】
图-10中,三副本中若有两个以上完成处理,写即可认为成功。若三副本中只有一个完成写入,会怎样?到底几个副本完成才能认为写成功?
成功的写操作要求三副本中至少两个完成,即至多有一个副本可能包含旧值。因此,在读取时需至少向两个副本发起读请求,通过版本号可确定一定至少有一个包含新值。若第三个副本停机或响应慢,则读取仍可继续并返回最新值。
若有n副本,写入须w个节点确认,至少为每个读取查询r个节点。只要 w + r > n,我们期望在读取时获得最新值,因为r个读取中至少有一个节点最新。遵循这些r值,w值的读写称为法定人数(quorum)读和写。也可认为r和w是判定读、写是否有效的最低票数。
Dynamo风格的数据库中,参数n,w和r一般可配置。常见选择是n为奇数(3或5)并设置 (向上取整)。但是可以根据需要更改数字。例如,设置和的写入很少且读取次数较多的工作负载可能会受益。这使得读取速度更快,但具有只有一个失败节点导致所有数据库写入失败的缺点。
集群中可能存在多于n的节点。(集群的机器数可能多于副本数目),但任何给定的值只能存储在n个节点上。这允许对数据集进行分区,从而可以支持比单个节点的存储能力更大的数据集。
仲裁条件定义了系统可容忍的失效节点个数:
- 如果,如果节点不可用,我们仍然可以处理写入。
- 如果,如果节点不可用,我们仍然可以处理读取。
- 对于,我们可以容忍一个不可用的节点。
- 对于,我们可以容忍两个不可用的节点。 这个案例如图5-11所示。
- 通常,读取和写入操作始终并行发送到所有n个副本。 参数w和r决定我们等待多少个节点,即在我们认为读或写成功之前,有多少个节点需要报告成功。

若少于所需的w或r节点可用,则写入或读取将返回错误。 节点不可用原因:因执行操作的错误(由于磁盘已满而无法写),因为节点关闭(崩溃,关闭电源),由于客户端和服务器节点之间的网络中断等。 只关心节点是否返回了成功响应,无需区分出错的具体原因。
边栏推荐
- adb shell 报错error: device unauthorized
- Intelligent bin (9) - vibration sensor (raspberries pie pico implementation)
- T - sne + data visualization parts of the network parameters
- 牛客网刷题(三)
- Implementing DDD based on ABP
- 字符指针赋值[通俗易懂]
- 【7.29】Code Source - 【Arrangement】【Stone Game II】【Cow and Snacks】【Minimum Number of Spawns】【Sequence】
- LevelSequence源码分析
- 6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务
- 复制延迟案例(1)-最终一致性
猜你喜欢
随机推荐
TypeError: unhashable type: ‘list‘
tensorflow2.0 cnn(layerwise)
2.索引及调优篇【mysql高级】
MySQL多表联合查询
[pytorch] 1.7 pytorch and numpy, tensor and array conversion
Delete table data or clear table
MySQL database operations
JS基础小练习
gerrit中如何切换远程服务器
智能垃圾桶(九)——震动传感器(树莓派pico实现)
最新神作!阿里巴巴刚出炉的面试参考指南(泰山版),我直接狂刷29天
C language "the third is" upgrade (mode selection + AI chess)
多主复制下处理写冲突(4)-多主复制拓扑
【TypeScript】深入学习TypeScript类型操作
牛客 HJ20 密码验证合格程序
Delete the disk in good condition (recovery partition)
Flutter set the background color of the statusbar status bar and APP method (AppBar) internal consistent color.
tooltips使用教程(鼠标悬停时显示提示)
Visualize GraphQL schemas with GraphiQL
mysql black window ~ build database and build table








![[pytorch] pytorch automatic derivation, Tensor and Autograd](/img/99/c9632a7d3f70a13e1e26b9aa67b8b9.png)