一、什么是Paxos算法
Paxos算法是一种基于消息传递的且有高度容错性的一种算法,解决的问题是一个分布式系统如何就某个值(决议)达成一致。
二、Paxos算法中的三种角色
在Paxos算法中一共有三总角色:proposer、acceptor、learner;proposer负责提出提案;acceptor负责对提案做出裁决;leader负责学习得到提案;为了避免单节点故障,会有一个acceptor集合。proposer向该集合发送提案,当有一半以上的成员同意时,则同意该提案。、
三、Paxos算法的主要过程
主要过程如下:两部分:prepare阶段、acceptor阶段
prepare阶段:prepare提出编号为Mn的提案,向acceptor集合发送prepare请求。
acceptor做出反馈:保证不会在接受编号比Mn小的提案;如果acceptor已经批准过某提案,会向proposer返回已经批准的编号最大的提案的value值;如果acceptor收到一个编号为Mn的请求编号大于acceptor已经响应的所有prepare请求的编号,则它会将自己已经批准过的编号最大的提案值反馈给proposer,同时acceptor承诺不会在接受编号比Mn小的提案(优化,忽略编号小于已批准的提案的要求),如果proposer收到了集合至少少于一半的响应,则
会发送一个针对Mn、Vn的acceptor请求给acceptor。Vn为收到的所有响应中编号最大提案的值。如果响应不包括值,则可以由proposer进行选择任意值。
Accept阶段:Accept收到acceptor请求后,只要未收到任何编号大于M的prepare请求,则通过该提案。(Accept阶段接收提案的要求)
四、Paxos算法的应用
chubby(分布式锁服务、GFS中master选举)