@article{42993bf3ec6545469d74e13aec08bff6,
title = "Derecho: Fast state machine replication for cloud services",
abstract = "Cloud computing services often replicate data and may require ways to coordinate distributed actions. Here we present Derecho, a library for such tasks. The API provides interfaces for structuring applications into patterns of subgroups and shards, supports state machine replication within them, and includes mechanisms that assist in restart after failures. Running over 100Gbps RDMA, Derecho can send millions of events per second in each subgroup or shard and throughput peaks at 16GB/s, substantially outperforming prior solutions. Configured to run purely on TCP, Derecho is still substantially faster than comparable widely used, highly-tuned, standard tools. The key insight is that on modern hardware (including non-RDMA networks), data-intensive protocols should be built from non-blocking data-flow components.",
keywords = "Cloud computing, Consistency, Non-volatile memory, RDMA, Replication",
author = "Sagar Jha and Jonathan Behrens and Theo Gkountouvas and Matthew Milano and Weijia Song and Edward Tremel and {Van Renesse}, Robbert and Sydney Zink and Birman, {Kenneth P.}",
note = "Funding Information: This work was supported in part by grants from the NSF-sponsored Institute for Computational Sustainability at Cornell University, NSF, DARPA, ARPA-e, NYSERDA, Huawei, and Mellanox. Authors{\textquoteright} addresses: S. Jha, T. Gkountouvas, M. Milano, W. Song, E. Tremel, S. Zink, K. P. Birman, and R. van Renesse, Cornell University, Department of Computer Science, Gates Hall, Ithaca, NY 14850, USA; emails: srj57@cornell.edu, {tedgoud, milano, ws393, edward}@cs.cornell.edu, sydney.zink@gmail.com, {ken, rvr}@cs.cornell.edu; J. Behrens, Cornell University, Department of Computer Science, Gates Hall, Ithaca, NY 14850, USA, and MIT, Department of Electrical Engineering and Computer Science, 77 Massachusetts Ave, Cambridge, MA, 02139, USA; email: behrensj@mit.edu. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from permissions@acm.org. {\textcopyright} 2019 Association for Computing Machinery. 0734-2071/2019/03-ART4 $15.00 https://doi.org/10.1145/3302258 Funding Information: This work was supported in part by grants from the NSF-sponsored Institute for Computational Sustainability at Cornell University, NSF, DARPA, ARPA-e, NYSERDA, Huawei, and Mellanox. Cornell's Dave Lifka and Chris Hemple at the UT Stampede 1 computing center were extremely helpful in providing testbeds used to evaluate Derecho. Heming Cui and the APUS developers helped us compare Derecho with APUS. We are particularly grateful to the anonymous Transactions on Computer Systems reviewers for their detailed and constructive suggestions. In addition, a number of our colleagues reviewed early drafts of this article and made helpful comments. These include the following: Marcos Aguilera, Mahesh Balakrishnan, Eddie Bortnikov, Miguel Castro, Gregory Chockler, Hana Chockler, David Cohen, Manuel Costa, Aleksandar Dragojevi{\'c}, Joseph Gonzalez, Guy Goren, Qi Huang, Roy Friedman, Alexy Gotsman, Joe Izraelevitz, Idit Keidar, Lev Korostyshevsky, Liran Liss, Dahlia Malkhi, David Maltz, Pankaj Mehra, Dahlia Malkhi, Yoram Moses, Dushyanth Narayanan, Oded Padon, Fernando Pedone, Noam Rinetsky, Kurt Rosen-feld, Ant Rowstron, Mooley Sagiv, Ashutosh Saxena, Robert Soule, Ion Stoica, Orr Tamir, Paulo Verissimo, and Matei Zaharia. Publisher Copyright: {\textcopyright} 2019 Association for Computing Machinery.",
year = "2019",
doi = "10.1145/3302258",
language = "English (US)",
volume = "36",
journal = "ACM Transactions on Computer Systems",
issn = "0734-2071",
publisher = "Association for Computing Machinery (ACM)",
number = "2",
}