2

“非全日制议会”第 3.3.6 节建议,可以安全地更改议会成员(以及因此决定的法定人数),“让通过法令时使用的议会成员在法令中由法律指定n-3"。

翻译成更常见的 MultiPaxos 术语,这意味着接受者集成为复制状态机状态的一部分,由添加或删除接受者的提议更改。槽 N 的法定人数将从决定槽 N-3 时的状态中定义的接受者集合中获取。

Lamport 没有为这个决定提供任何理由,虽然他的下一段说必须小心处理更改并描述了算法的最终失败,但它失败的原因与这个特定问题无关。

这是确保一致性的充分保障吗?如果有,有哪些文献支持它?

4

2 回答 2

2

我维护一个 Paxos 系统,它是几个大型 Web 服务的核心组件。系统运行 Basic Paxos,而不是 Multi-Paxos。在该系统中,可以像任何其他转换一样提议对接受者集进行更改。paxos 实例 N 的一组接受者是在 N-1 中被批准的接受者。

我不确定是否有任何文献支持这一点,但看到它有效是微不足道的。因为 Paxos 保证了转换 N-1 的共识,所以保证了主机同意哪些可以充当转换 N 的接受者。

然而,使用 Multi-Paxos 和Raft或任何流水线共识算法,事情会变得有点复杂。根据Raft 视频讲座,这必须是一个两阶段的方法,但我不记得他解释了原因。

于 2014-01-27T05:12:29.153 回答
1

在进一步阅读由 Michael 链接的raft 用户研究的 Paxos 幻灯片时,我发现我的建议很接近,但实际上每个决定都需要在所有参与者都同意的观点下做出。如果我们选择在槽 N-1 处有效的视图,则将整个机器限制为锁步:只有在确定了前一个槽后才能确定每个槽。

然而,N-1 可以推广到 N-α,其中 Lamport 设置 α=3。只要所有参与者都同意α,他们就每个槽的视图都同意,这意味着算法的其余部分正确性成立。

这增加了相当微不足道的存储开销,然后:领导者必须跟踪在副本上执行的最新槽和前面的 α-1 槽的视图。这是足够的信息来确定时隙 N ( slot_views[N-α]) 的视图,或者知道视图未定义(时隙 N-α 或某个先前的时隙尚未确定)并因此忽略提议。

于 2014-02-03T15:08:05.477 回答