Paxos是什么
是用于解决分布式系统中一致性问题的共识算法(Consensus Algorithm)
Paxos要解决的根本问题可以概括为一句话将所有节点都写入同一个值,且被写入后不再更改
。
Paxos基础
角色
- Proposers(提议人)
为达成一致性提出意见,他可以提出议案(value),不同的Proposer可以提出不同的value
- Acceptors(决策者)
助于达成一致性,只有超过半数的决策者批准后议案才可以通过
- Learners(最终决策学习者)
学习商定后的结果,主要负责将把通过的确定性的值同步给其他不确定的Acceptors
要点
- Paxos的结点可以扮演多个角色
- Paxos的结点必须知道大多数的acceptors(超过一半)是多少
- Paxos的结点必须是持久的,他们不能忘记他们接受的内容
- 一个Paxos协议是为了获得一个共识,当这个共识被确定时,他就不能再被改变
协议流程
- Proposer需要提出一个议案(value),他将发送 PREPARE IDp给大多数的Acceptors
IDp必须是第一无二的,比如一个时间戳例子:
Proposer1 的ID可以为1,3