分布式一致性协议:Paxos

Paxos算法是Leslie Lamport于1990年提出的一种基于消息传递且具有高度容错特性的共识(consensus)算法。

一、角色说明

proposers: 提出提案,提案信息包括提案编号和提议的 value;

acceptor :收到提案后可以接受(accept)提案,若提案获得多数派(majority)的 acceptors 的接受,则称该提案被批准(chosen);

learners :只能“学习”被批准的提案。

二、paxos算法的两个阶段

第一阶段:prepare

proposer选择一个提案编号n并将prepare请求发送给acceptors中的一个多数派;

acceptor收到prepare消息后,如果提案的编号大于它已经回复的所有prepare消息(回复消息表示接受accept),则acceptor将自己上次接受的提案回复给proposer,并承诺不再回复小于n的提案;

第二阶段:批准

当一个proposer收到了多数acceptors对prepare的回复后,就进入批准阶段。它要向回复prepare请求的acceptors发送accept请求,包括编号n和根据P2c决定的value(如果根据P2c没有已经接受的value,那么它可以自由决定value)。

在不违背自己向其他proposer的承诺的前提下,acceptor收到accept请求后即批准这个请求。

这个过程在任何时候中断都可以保证正确性。例如如果一个proposer发现已经有其他proposers提出了编号更高的提案,则有必要中断这个过程。因此为了优化,在上述prepare过程中,如果一个acceptor发现存在一个更高编号的提案,则需要通知proposer,提醒其中断这次提案。

算法图解


图片引用链接:http://codemacro.com/2014/10/15/explain-poxos/

参考:

1、维基百科-Paxos算法

2、图解分布式一致性协议Paxos

你可能感兴趣的:(分布式一致性协议:Paxos)