某复制系统共有 N=3 个副本,一次写入至少获得 W=2 个副本确认才成功,一次读取查询 R=2 个副本。关于该配置,正确的是()。
W+R>N 时,大小分别为 W 和 R 的任意两个副本集合不可能完全不相交,因此读取至少会碰到一个参与最新成功写入的副本。N=3、W=2、R=2 满足该条件。
选项分析
错误。题设 W=2,获得两个确认即可按该策略判定写成功。
错误。未参与写确认的副本可能暂时落后,W=R 不代表瞬时全副本一致。
错误。奇数副本便于形成多数派,但版本和冲突机制仍不可少。
正确。W+R>N 保证成功读写集合存在交集。
本题为什么容易错
公式背对了不难,难的是别过度解释。集合重叠保证读集合里至少有一个较新候选,不保证应用一定选对版本,更不自动解决并发写。
简短答案
N=3、W=2、R=2 时,为什么读写集合一定有副本重叠,正确答案是 D(因为 W+R=4>N,任意成功写集合与读集合至少有一个副本重叠)。W+R>N 时,大小分别为 W 和 R 的任意两个副本集合不可能完全不相交,因此读取至少会碰到一个参与最新成功写入的副本。N=3、W=2、R=2 满足该条件。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 一次写入必须等待全部 3 个副本才算成功 | 本题干扰项 | 错误。题设 W=2,获得两个确认即可按该策略判定写成功。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 因为 W=R,所以三个副本中的数据在任何时刻都必然完全一致 | 本题干扰项 | 错误。未参与写确认的副本可能暂时落后,W=R 不代表瞬时全副本一致。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 只要 N 为奇数,就不需要版本号或冲突处理 | 本题干扰项 | 错误。奇数副本便于形成多数派,但版本和冲突机制仍不可少。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 因为 W+R=4>N,任意成功写集合与读集合至少有一个副本重叠 | 本题正确答案 | 正确。W+R>N 保证成功读写集合存在交集。 | 看到题干核心场景时优先联想到它 |
本题易混淆选项怎么区分
- 一次写入必须等待全部 3 个副本才算成功:错误。题设 W=2,获得两个确认即可按该策略判定写成功。
- 因为 W=R,所以三个副本中的数据在任何时刻都必然完全一致:错误。未参与写确认的副本可能暂时落后,W=R 不代表瞬时全副本一致。
- 只要 N 为奇数,就不需要版本号或冲突处理:错误。奇数副本便于形成多数派,但版本和冲突机制仍不可少。
知识点详解
提高 W 会增加写延迟并降低写可用性,提高 R 会增加读成本。W+R>N 可保证读写法定集合相交,W>N/2 可让两个成功写集合相交,但系统的实际一致性仍取决于并发模型、故障恢复、版本判定和客户端语义。网络分区时,达不到法定人数的一侧还必须明确拒绝、降级或转为只读。
备考速记
读写人数相加超过总人数,两拨人至少碰到一个;碰到之后还要认版本。
Quorum 在分布式一致性场景中的作用
Quorum在本题中的核心价值,是解决“某复制系统共有 N=3 个副本,一次写入至少获得 W=2 个副本确认才成功,一次读取查询 R=2 个副本。关于该配置,正确的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给出 N、W、R,判断是否存在读写交集。
- 在一致性、可用性和读写延迟之间选择参数。
Quorum 在系统架构设计师软考中的考法
软考选择题通常不会只考概念定义,还会把Quorum放到分布式一致性场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
拿三张椅子来想最直观。写成功至少坐两张,读也至少检查两张。在只有三张椅子的房间里,两组各占两张,不可能完全错开,至少会碰上一张。这个交集让读取有机会看到最新写入,但客户端还得知道哪个版本新;若两个写同时发生,也仍要处理冲突。
考点定位
法定人数交集只是读到最新版本的重要基础,还要结合版本比较、并发写冲突、时钟和故障处理;不能把一个不等式夸大成天然线性一致。
易错提醒
- 只检查 W+R>N,忘记多写者场景还常关注 W>N/2。
- 认为 R 越大只会提高一致性,没有可用性和延迟代价。
- 把副本确认数与物理节点总数混为一谈。
备考提示
- 用集合交集解释公式,比死背 N、W、R 更牢。
- 答架构题时补一句版本向量、时间戳或冲突合并的边界。
你可能还想了解
- W+R>N 能保证强一致性吗?
- Quorum 中 R 和 W 怎样影响可用性?
- 为什么多数写常要求 W>N/2?
本文小结
N=3时,W=2和R=2的集合大小之和为4,大于副本总数3,所以成功读集合与写集合至少重叠一个副本。交集提供读取新版本的基础,但仍需版本判断和冲突处理。