提交 34cbe45b 编写于 作者: B Baohua Yang 提交者: GitHub

Update paxos.md

上级 df41783b
......@@ -64,13 +64,17 @@ Paxos 能保证在超过 $$1/2$$ 的正常节点存在时,系统能达成共
Paxos 里面对这两个阶段分别命名为准备(prepare)和提交(commit)。准备阶段解决大家对哪个提案进行投票的问题,提交阶段解决确认最终值的问题。
下面,我们简化认为更大的提案号意味着更新的提案。
**准备阶段**
准备阶段,比较简单,多个提案者可以发送提案:`<id, value>`,接收者收到提案就返回收到消息,并且只保留最新的提案。如果收到一个请求的提案号比目前保留的小,则返回保留的提案给提案者,告诉它已经有其它人发出更新的提案了。
* 提案者发送自己计划提交的提案的编号到多个接受者,试探是否可以锁定多数接受者的支持。
* 接受者时刻保留收到过提案的最大编号和接受的最大提案。如果收到提案号比目前保留的最大提案号还大,则返回自己已接受的提案值(如果还未接受过任何提案,则为空)给提案者,更新当前最大提案号,并说明不再接受小于最大提案号的提案。
提交阶段,如果一个提案者在准备阶段收到大多数的回复(表示大部分人听到它的请求,可能做好了最终确认的准备了),则再次发出确认消息。如果再次收到大多数的回复,并且大家都返回空,则带上原来的提案号和内容;如果返回中有更新的提案,则替换提案值为更新提案的值。如果没收到足够多的回复,则需要再次发出请求。
**提交阶段**
接收者如果发现这个提案号跟自己目前保留的一致,则确认该提案。
* 提案者如果收到大多数的回复(表示大部分人听到它的请求),则可准备发出带有刚才提案号的接受消息。如果收到的回复中不带有新的提案,说明锁定成功。则使用自己的提案内容;如果返回中有提案内容,则替换提案值为返回中编号最大的提案值。如果没收到足够多的回复,则需要再次发出请求。
* 接受者收到接受消息后,如果发现提案号不小于已接受的最大提案号,则接受该提案,并更新接受的最大提案。
一旦多数接受了共同的提案值,则形成决议,成为最终确认。
### Raft
Raft 是对 Paxos 的重新设计和实现。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册