当前位置:网站首页>无主复制系统(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节点可用,则写入或读取将返回错误。 节点不可用原因:因执行操作的错误(由于磁盘已满而无法写),因为节点关闭(崩溃,关闭电源),由于客户端和服务器节点之间的网络中断等。 只关心节点是否返回了成功响应,无需区分出错的具体原因。
边栏推荐
猜你喜欢
【TypeScript】深入学习TypeScript类型操作
使用 Postman 工具高效管理和测试 SAP ABAP OData 服务的试读版
【网络通信三】研华网关Modbus服务设置
tooltips使用教程(鼠标悬停时显示提示)
The new BMW 3 Series is on the market, with safety and comfort
Graham's Scan method for solving convex hull problems
【pytorch】1.7 pytorch与numpy,tensor与array的转换
动态规划之线性dp(上)
使用互相关进行音频对齐
Foreign media right, apple on May be true in inventory
随机推荐
基于Redis(SETNX)实现分布式锁,案例:解决高并发下的订单超卖,秒杀
【网络通信三】研华网关Modbus服务设置
type of timer
[TypeScript] In-depth study of TypeScript type operations
Snake Project (Simple)
[TypeScript]OOP
MySQL多表联合查询
Emmet syntax
6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务
Insert into data table to insert data
2020 WeChat applet decompilation tutorial (can applet decompile source code be used)
ansible study notes 02
网站漏洞修复服务商关于越权漏洞分析
牛客网刷题(四)
【7.29】代码源 - 【排列】【石子游戏 II】【Cow and Snacks】【最小生成数】【数列】
研发过程中的文档管理与工具
jeecg主从数据库读写分离配置「建议收藏」
MySQL基础篇【单行函数】
Stuck in sill idealTree buildDeps during npm installation, npm installation is slow, npm installation is stuck in one place
复制延迟案例(1)-最终一致性