分布式一致性算法Paxos
Paxos是一种基于消息传递的分布式一致性算法,由Leslie Lamport(莱斯利·兰伯特)于1990提出。是目前公认的解决分布式一致性问题的最有效算法之一。 要解决的问题及应用场景 Paxos算法要解决的问题,可以理解为:一个异步通信的分布式系统中,如何就某一个值(决议)达成一致。 而此处异步通信是指,消息在网络传输过程中存在丢失、超时、乱序现象。 其典型应用场景为: 在一个分布式系统中,如果各节点初始状态一致,而且每个节点执行相同的命令序列,那么最后就可以得到一个一致的状态。为了保证每个节点执行相同的命令序列,即需要在每一条指令上执行一致性算法(如Paxos算法),来保证每个节点指令一致。 概念定义 Proposal:为了就某一个值达成一致而发起的提案,包括提案编号和提案的值。 涉及角色如下: Proposer:提案发起者,为了就某一个值达成一致,Proposer可以以任意速度、发起任意数量的提案,可以停止或重启。 Acceptor:提案批准者,负责处理接收到的提案,响应、作出承诺、或批准提案。 Learner:提案学习者,可以从Acceptor处获取已被批准的提案。 约定 Paxos需要遵循如下约定: 1、一个Acceptor必须批准它收到的第一个提案。 2、如果编号为n的提案被批准了,那么所有编号大于n的提案