本文以图文并茂的方式重新演绎 Paxos 开山之作 《The Part-Time Parliament》[1],并尝试解释原论文中语焉不详的地方。
背景
在 Paxos 小岛上,施行着一种 Parliament(议会) 政治。小岛上执行的所有 decree(法令) 都需要先由 Parliament 在 Chamber 内表决通过。legislator(议员) 将 Parliament 通过的 decree 记录在他随身携带的 ledger(账本) 上。比如某 legislator 在其 ledger 记录了第 155 号 decree 如下:

为了防止岛上的 decree 出现冲突,导致不必要的纠纷, 任何两个 legislator 记录的相同编号的 decree 要么是一样的,要么其中某个 legislator 不存在该编号的 decree。

legislator 倾向于通过别人发起的 decree 请求, 只要其他 legislator 发起的 decree 请求与自己 ledger 记录不冲突,则为它投票。

为了保证 decree 的顺利产生, 除了在 ledger 正面记录表决通过的 decree, legislator 还需要记录一些中间过程: 需要长期持有的信息记录在 ledger 背面, 这部分信息可以被划掉;需要临时持有的信息记录在草稿纸上, legislator 仅在 Chamber 内保留记录信息的草稿纸。

legislator 都是兼职的(part-time), 因此他们可以选择随时离开或加入 Chamber 参与投票。

本文通过图文解释了Paxos算法的核心概念,包括Parliament设定、兼职立法者、提案与投票流程、Quorum的使用,以及如何通过多轮投票确保单一法令的共识。在每次投票中,立法者基于历史记录和参与情况确保提议的法令不冲突,最终达成一致。
最低0.47元/天 解锁文章
1979

被折叠的 条评论
为什么被折叠?



