知识卡片
从状态转移到操作转移再到Quorum机制的演进逻辑
内容
保障可靠性最朴素的思路是”多备份几份”(多硬盘备份数据),但静态硬盘备份 和动态数据的分布式复制有本质差异:数据会持续变动,还要在不可靠网络下 保证正确同步。最直接的复制思路是状态转移——把每次数据变化当成事务,要 求所有节点都反馈成功才算完成(如MySQL全同步复制要求所有Slave的Binlog 都写完才提交Master),这种方式能确保绝对一致,但任何一个节点未响应都会 阻塞整个事务,节点越多可用性风险越高,这正是分布式系统难以承受的代价。 操作转移换了个思路:不直接同步”目标状态”,而是让每个节点从相同的初始 状态出发、按相同顺序执行相同的操作指令序列,最终自然达到一致状态——这 就是状态机复制的原理。执行期间允许节点内部状态短暂不一致,只要这种不 一致不被外部观察到即可。为了不让”所有节点都要响应”这个瓶颈重新出现, Quorum机制进一步放宽要求:只要过半数节点完成状态转换就认定数据已正确 存储,能容忍少数节点失联,这就是”协商共识”(Consensus)要解决的核心 问题——注意”共识”指的是达成一致的方法与过程,”一致性”指的是数据副本 间的差异状态,两者不是同一回事,中文资料常把两者混为一谈是翻译造成的 误解。
结构图:
flowchart LR
A[状态转移: 全部节点确认才提交] -->|任一节点不响应即阻塞, 可用性随节点数下降| B[矛盾: 可靠性要求高 又要求高可用]
B -->|改为同步操作指令而非目标状态| C[操作转移: 状态机复制]
C -->|初始状态一致+操作序列一致→最终状态一致| D[允许内部短暂不一致, 只要外部不可见]
D -->|放宽为多数派而非全体确认| E[Quorum机制: 过半数完成即算成功]
E --> F[协商共识 Consensus: 达成一致的方法与过程]
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第6章"分布式共识"引言
(源文件:_epub-src对应OEBPS/Text/chapter76.xhtml)
- 结论依据:原文从硬盘备份类比出发,指出状态转移(全同步复制)因任一
节点未响应即阻塞而牺牲可用性,进而引出操作转移/状态机复制允许内部
短暂不一致,再引出Quorum机制的多数派原则,并明确区分共识与一致性的
概念差异,直接支撑本卡片的演进结构。
- 原始内容:以同步为代表的数据复制方法,被称为状态转移,是较符合人类
思维的可靠性保障手段,但通常要以牺牲可用性为代价……一旦系统中过半数
的节点完成了状态的转换,就认为数据的变化已经被正确地存储在了系统中,
这种思想在分布式中被称为"Quorum机制"。