Classical state-machine replication protocols, such as Paxos, rely on a distinguished leader process to order commands. Unfortunately, this approach makes the leader a single point of failure and increases the latency for clients that are not co-located with it. As a response to these drawbacks, Egalitarian Paxos introduced an alternative, leaderless approach, that allows replicas to order commands collaboratively. Not relying on a single leader allows the protocol to maintain non-zero throughput with up to $f$ crashes of any processes out of a total of $n = 2f+1$. The protocol furthermore allows any process to execute a command $c$ fast, in $2$ message delays, provided no more than $e = \lceil\frac{f+1}{2}\rceil$ other processes fail, and all concurrently submitted commands commute with $c$; the latter condition is often satisfied in practical systems. Egalitarian Paxos has served as a foundation for many other replication protocols. But unfortunately, the protocol is very complex, ambiguously specified and suffers from nontrivial bugs. In this paper, we present EPaxos* -- a simpler and correct variant of Egalitarian Paxos. Our key technical contribution is a simpler failure-recovery algorithm, which we have rigorously proved correct. Our protocol also generalizes Egalitarian Paxos to cover the whole spectrum of failure thresholds $f$ and $e$ such that $n \ge \max\{2e+f-1, 2f+1\}$ -- the number of processes that we show to be optimal.
翻译:经典状态机复制协议(如Paxos)依赖一个特定的领导者进程来排序命令。然而,这种设计将领导者变为单点故障,并增加了非共处客户端的延迟。为解决这些问题,平等Paxos(Egalitarian Paxos)提出了一种去中心化的替代方案,允许副本协同排序命令。不依赖单一领导者的特性使其在总进程数 $n = 2f+1$ 中最多容忍 $f$ 个任意进程崩溃时仍能保持非零吞吐量。此外,该协议允许任何进程在 $2$ 个消息延迟内快速执行命令 $c$,前提是同时失效的其他进程不超过 $e = \lceil\frac{f+1}{2}\rceil$ 个,且所有并发提交的命令均与 $c$ 可交换(实际系统中常满足此条件)。平等Paxos已成为众多复制协议的基础。但遗憾的是,该协议极其复杂、规范模糊且存在严重错误。本文提出EPaxos*——一个更简单且正确的平等Paxos变体。我们的核心技术贡献在于一个经严格正确性证明的简化故障恢复算法。该协议还将平等Paxos推广至覆盖完整的故障阈值谱系:$n \ge \max\{2e+f-1, 2f+1\}$(我们证明此为最优进程数),其中 $f$ 和 $e$ 为任意故障阈值。