← 中文资源

简体中文版本

法定人数

法定人数是操作获得确认所需的最小副本集合;多数派以及 R + W > N 的重叠可避免读到过期数据。

阅读英文原文

重叠才是关键

三个副本中,写法定人数为二、读法定人数为二时,读集合与写集合至少重叠一个节点。读取会联系两个副本并返回最新值,其中至少一个见过最后一次确认的写入。公式是 R + W > N。提高 W 可以增强持久性,提高 R 可以增强读取信心,两者都会增加延迟成本。

N = 3 个副本
W = 2 -> 一次写需要两个确认
R = 2 -> 一次读联系两个副本
R + W = 4 > N = 3 -> 两个集合必然重叠

算术是必要条件,不是充分条件。如果副本可能分叉,而读取不比较版本,联系两个节点可能返回冲突值。存储需要版本号、领导者或冲突解决规则。一个被两个节点确认的写入,如果这两个节点在复制到第三个节点前失效,仍可能丢失;持久性取决于故障模型,而不只是公式。

多数派与共识

共识协议使用多数派,使两个领导者不能同时当选。候选人需要超过半数的投票者,而任意两个多数派必然重叠。这就是五节点集群能容忍两个故障、三节点集群能容忍一个故障的原因。增加节点会提高容错能力,但也会增加每次决策的成本和慢节点的概率。

宽松法定人数与提示移交

有些系统在分区期间接受落在首选副本集之外的写入,之后再移交。这提高了可用性,却削弱了重叠保证:读法定人数可能不包含持有提示写入的节点。依赖 R + W > N 之前,要确认系统提供的是严格法定人数还是宽松法定人数。

何时使用

当需要在延迟、持久性和读取新鲜度之间做可调权衡时,使用法定人数。优点是有一套容忍故障的原则;缺点是法定人数算术不能替代一致性模型。与单主相比,法定人数能在部分故障下继续可用,但需要冲突处理和谨慎配置。