Consensus protocols are widely used to build fault-tolerant applications. At one end of the spectrum of such protocols, Multi-Paxos and Raft have seen widespread adoption, but sacrifice significant latency and throughput. At the other end, protocols like Speculative Paxos and NOPaxos provide high-performance, but require specialized hardware and in-network functionality. This makes it hard to deploy them in environments such as the public cloud, where cloud tenants cannot access the physical network. Our work aims to bridge this gap between deployability and performance. We present Nezha, a high-performance and deployable consensus protocol that exploits accurate software clock synchronization. Nezha does not require special hardware or physical network access, making it easily deployable in virtualized environments. Instead, it uses a new primitive called deadline-ordered multicast (DOM) which orders client-to-replica multicast requests by deadlines specified in synchronized wall-clock time. We compare Nezha to 4 baselines in the public cloud: Multi-Paxos, FastPaxos, NOPaxos and Raft. Evaluations show that Nezha outperforms the baselines by a median of 8.2x (range: 1.9-20.9x) in throughput, and by a median of 1.9x (range: 1.3x-3.7x) in latency. We also use Nezha to replicate two applications (Redis and a prototype financial exchange) and show that Nezha can provide fault tolerance with only a modest performance degradation: compared with the unreplicated system, Nezha sacrifices 5.9% throughput for Redis; it saturates the processing capacity of CloudEx and prolongs the order processing latency by 4.7%.
翻译:多 Paxos 和 Raft 等协议被广泛用于构建容错应用程序。 在这样的协议的一端, 多 Paxos 和 Raft 等协议被广泛采用, 但却牺牲了大量的悬浮和吞吐量。 在另一端, 光谱和平和 NOPaxos 等协议提供高性能, 但需要专门的硬件和网络功能。 这使得很难在公共云层等环境中部署协议, 云租户无法访问物理网络。 我们的工作旨在缩小部署能力与性能之间的这一差距。 我们展示了一个高性能和可部署的共识协议, 利用了准确的软件时钟同步。 Nezha不需要特殊的硬件或实体网络访问, 使得它可以在虚拟化环境中容易部署。 相反, 它使用一个新的原始的叫定期限的多版多版功能。 这就使得很难在像公共云层这样的环境中部署它们。 我们把Nezha 与公共云层中的4个基底线比起来: 多- Pax、 Fast- Pax 、 NOPax 和 Raft。 评价显示, Nez- salex lix 的内值比值, 和 Nex 直径 的运行, 通过一个中的一个平流运行, 直径, 和正值, 通过一个平流的正序, 和正序, 通过一个中, 以正序, 直径流流 直线, 显示一个直线, 直径 。