Paxos协议
1、Paxos算法
Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人在微软研究院)1990年提出的一种基于消息传递的一致性算法。
1.1 、目的 :
解决分布式环境下一致性的问题。基于消息传递通信模型的分布式系统中,进程可能会慢、被杀死或者重启,消息可能会延迟、丢失、重复,在基础Paxos场景中,保证不论发生以上任何异常,都不会破坏决议的一致性。
2、Paxos详解
2.1 三个角色
Proposer(提议者):提议一个值
Acceptor(接受者):对每个提议进行投票;
Learner(学习者):被告知投票的结果,不参与投票过程。
2.2 提交步骤
2.2.1 第一阶段
1、proposer向网络内超过半数的acceptor发送prepare消息
2、acceptor正常情况下回复promise消息
2.2.2 第二阶段
1、 在有足够多acceptor回复promise消息时,proposer发送accept消息
2、 正常情况下acceptor回复accepted消息
3、 当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来
因为在整个过程中可能有多个proposer针对同一件事情发出以上请求,所以在每个过程中都会有些特殊情况处理,这也是为了达成一致性所做的事情。如果在整个过程中没有多个proposer来竞争,那么这个操作的结果就是确定无异议的。表示了多个节点达成共识的复杂性。