通信兵

Paxos学习笔记

此生再无相见时 提交于 2019-12-20 23:28:07
最早发表的《The Part-Time Parliament》历史有点久远了,先略过不读。 一、《Paxos Made Simple》 这是Lamport 2001年写的基本上是《The Part-Time Parliament》的简化版本。Lamport在文中强调的是Paxos的两阶段执行过程(准备阶段和接受阶段),最后的Phase 3没有被当作独立的阶段(但文章用独立章节2.3介绍了Phase3即学习阶段)。 Paxos 问题描述 为了方便描述和分析这个问题,做了如下定义 决议(Valule):要解决的问题,这里定义为选择一个决议(Valule) 议案(Proposal):任何进程对这个的一个提议,我们叫做一个议案 三种角色:提议者Proposer(提出一个议案),批准者Acceptor(同意这个议案),学习者Learner(获知结果)。一个进程可以同时兼任这几个角色。 对结果的限制 : 只有被提出过的值可以被选择 只有一个值可以被选择 一个进程不会知道一个值被选择了,除非这个值真的被选择了(也就是没有错误信息)。 总体而言,问题的目标是保证,如果有一些值被提议了,那最终会有一个值会被选择通过,如果一个值被选择通过了,任一进程最终都会得知这个结果。值得注意的是,在这里,最终哪个值被选择了不重要(显然如果每个进程都坚持自己的议案,那永远不能达成一致),重要的是有一个值最终被选择了