
在 AP 型分布式系统中实现强一致性需求时,Quorum NWR 提供了一种灵活的解决方案,无需重构系统或迁移数据。以下是其核心原理和实现方法:
N(副本数) 副本数指数据在集群中的副本数量,支持自定义配置。例如,三节点集群中可设置不同数据的副本数为 2 或 3。需注意副本数通常不超过节点数,避免单节点故障影响多个副本。
W(写一致性级别) 写操作需成功更新 W 个副本才算完成。例如 DATA-2 的 W=2 时,需至少写入节点 A 和 C 才返回成功。此时若 W=3(即所有副本),则天然满足强一致性,但会牺牲写入性能。
R(读一致性级别) 读操作需查询 R 个副本并返回最新数据。当 W + R > N 时,能保证读取到最新值。例如 N=3、W=2、R=2 时,即使读取到未更新的节点 B,因需读取另一副本(如节点 C 的最新数据),仍能返回强一致结果。
一致性规则组合
InfluxDB 通过以下命令设置副本数:
CREATE RETENTION POLICY "rp_one_day" ON "telegraf" DURATION 1d REPLICATION 3支持四种写一致性级别:
any:任意节点或缓存写入成功即返回one:任意节点写入成功即返回(排除缓存)quorum:多数节点写入成功(副本数>2时有效)all:全部节点写入成功(实现强一致性)注意事项
all 实现强一致性需求。一般设置 3 副本即可平衡可靠性与开销:
Q:Quorum NWR 是否违反 CAP 定理? A:不违反。AP 系统通过动态调整 NWR 参数临时切换一致性级别,本质仍是最终一致性系统,仅在特定条件下(W+R>N)模拟强一致性。
Q:写入失败如何处理脏数据? A:需配合版本号或向量时钟等机制检测冲突,或通过反熵协议异步修复。分布式事务非必需,但会增加复杂度。