知识卡片
单点写入才能保证日志时序
内容
Paxos允许多点写入,代价是牺牲时序——无全局时钟排序,日志本身乱序提交,即使同客户端连续两条请求落地顺序也可能被打乱。Raft和Zab强制单点写入:写请求先到唯一Leader排好队再同步,接收顺序确定、天然有时序。发散:这是”表达能力vs简单性”的经典取舍——Paxos换来并发度但难理解,Raft牺牲并发度换来有序可读、易正确实现。
参考来源
- 位置:第11章《多副本一致性》11.3.2节「单点写入」(源文件:_epub-src/text/part0058.html)
- 结论依据:原文明确对比Paxos允许多点写入使算法理解复杂,Raft限制单点写入——必须选出Leader、所有写请求都传到Leader再同步给多数Follower,从而不用考虑节点间双向同步问题,数据同步是单向的,直接支持卡片对单点写入才能保证日志时序、Raft用可理解性换取正确性的论述。
- 原始内容:"Paxos算法可以多点写入……多点写入,使得算法理解起来复杂了很多。为了简化这一问题,Raft限制为'单点写入'……必须选出一个Leader,并且任一时刻只允许一个有效的Leader存在,所有的写请求都传到Leader上……数据的同步是单向的:只会从Leader同步到Follower。"