1.前言
一致的起点,难理解主要体现:为何如此设计协议以及如何证明其正确性。
2.基本概念
两种Paxos:
(1)Single-Decree Paxos:决策单个 Value(本文只关注单 Paxos 的原理)
(2)Multi-Paxos:连续决策多个 Value,并且保证每个节点上的顺序完全一致,多 Paxos 往往是同事运行多个单 Paxos 协议共同执行的结果。
2.1Paxos 协议中的三种角色( 可同时扮演 )
倡议者(Proposer):提出提议(数值或者操作命令)供投票表决
接受者(Acceptor):对提议投票,提议超半被选中
学习者(Learner):无投票权,从接受者获知哪个被选
2.2 Paxos 的特点
多个节点可提议
系统必须针对所有提案中的某个提案达成一致(超过半数的接受者选中)
最多确定一个提议一致
超半数节点存活且互相通信,整个系统一定能达成一致状态,选择确定提议
3. Paxos 实际应用过程
多个节点同时提出各自提议,从中选一个确定值,保证一致性。
五个节点分布式系统,A 提议 X 值,E 提议 Y 值,其他没提。
Paxos-1
A 广播提议(也发自己),网络延迟,只A,B,C 收到了。即使 A,E 同时到达某个节点,必然有先后顺序,不是真正“同时”
Paxos-2
A,B,C第一次接收提议,acceptedProposal 和 acceptedValue 都空
Paxos-3
A 已收到超半数节点响应,acceptedValue 更新为 X。
Paxos-4
A,B,C 会发生 minProposal 给 A,A 检查发现没有大于 1 的 minProposal 出现,此时 X 已经被选中。D,E acceptedValue 不是 X,不一致
Paxos-5
E 选择 Proposal ID 为 2 发送 Prepare 请求,和上面不一样了,C 已经接A ,不三心二意,告诉 E 它的选择,E 也选A,发起 Accept 请求一致