Why do we need Paxos and and How it works

参考《可靠分布式系统-paxos的直观解释》

            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
2
3
4
5
6
7
8
9
10
11
journey
title Why do we need Paxos?How it works?
section 单机
单机: 1 : 可用性低
section 多副本
异步复制: 2: 一致性低
同步复制: 2: 可用性低
半同步复制: 3: 一致性低, 2个写并发导致2个状态
多数派读写+时间戳: 5: 一致性低, client宕机导致读到2个状态, 2并发写覆盖
section Paxos
写前读: 7

Raft 动画演示

http://www.kailing.pub/raft/index.html

lihongyu wechat
欢迎扫描二维码关注公众号
0%