journey %%{init: {'theme':'default'}}%% title Why do we need Paxos?How it works? section 单机 单机: 1 : 可用性低 section 多副本 异步复制: 2: 一致性低 同步复制: 2: 可用性低 半同步复制: 3: 一致性低, 2个写并发导致2个状态 多数派读写+时间戳: 5: 一致性低, client宕机导致读到2个状态, 2并发写覆盖 section Paxos 写前读: 7
一些方便理解的重点
- 每个Paxos实例只维护一个值的状态
- 每个Paxos实例有多轮(Round)尝试写入,每个Round有2个Phase(Phase-1 写前读,Phase-2 写),只有Phase-1和Phase-2之间没有任何其他终端进行过Phase-1和Phase-2时才能成功完成Phase-2
- 客户端取到时间戳不一致的两个不同值时,有义务让更早的向更新的版本去对齐
- 每个Round都必然有且仅有一个多数派读,但是不一定有多数派写(可能Phase-2之前有更新的Round的Phase-1出现)
mermaid 的图有遮盖,看下面这个脑补看不到的汉字吧 :)
1 | journey |