节点宕机时如何实现强一致性读?Quorum机制场景疑问
分布式强一致性场景下的读取冲突处理
针对你描述的场景,核心处理逻辑依赖版本戳(或单调递增的事务ID、向量时钟),具体逻辑如下:
版本标识是判断新旧的核心
分布式系统中每一次写入都会生成唯一的版本标识(比如全局递增的序列号)。写入val=2到A、B时,这两个节点会记录该值对应的版本(假设为v2),而C上保留的是旧版本v1(对应旧值,比如val=1)。读取时以版本号判定最新值
读取B和C时,会同时拿到值和对应的版本信息:B返回(val=2, v2),C返回(val=1, v1)。此时直接选择版本号更大的val=2作为最新结果——版本号是写入顺序的唯一标识,更大的版本意味着更晚的写入操作。法定人数规则的底层保障
你提到的Vr + Vw > V规则,本质上保证了读集合和写集合必然存在交集。在这个例子里,写集合是{A,B},读集合是{B,C},交集是B,所以读操作一定会拿到至少一个持有最新版本的节点(也就是B),不会出现所有读节点都只有旧值的情况。可选的读修复优化
拿到最新值后,通常会触发读修复操作:把val=2和对应的版本v2同步到C,这样后续读取C时就能返回正确的最新值,避免重复出现不一致的情况。
内容的提问来源于stack exchange,提问作者YJL
相关产品推荐
相关产品推荐

