Rabia
Rabia: Simplifying State-Machine Replication Through Randomization (SOSP 2021)
Install / Use
/learn @haochenpan/RabiaREADME
Rabia
Introduction
We introduce Rabia, a simple and high performance framework for implementing state-machine replication (SMR) within a datacenter. The main innovation of Rabia is in using randomization to simplify the design. Rabia provides the following two features: (i) It does not need any fail-over protocol and supports trivial auxiliary protocols like log compaction, snapshotting, and reconfiguration, components that are often considered the most challenging when developing SMR systems; and (ii) It provides high performance, up to 1.5x higher throughput than the closest competitor (i.e., EPaxos) in a favorable setup (same availability zone with three replicas) and is comparable with a larger number of replicas or when deployed in multiple availability zones.
Our SOSP paper, "Rabia: Simplifying State-Machine Replication Through Randomization," describes Rabia's design and evaluations in detail (SOSP Artifact Review Summary) and earns three badges: artifact available, artifact evaluated, and artifact reproduced.
Project Keywords:
- state-machine replication (SMR), consensus, and formal verification
CCS Concepts:
- Computer systems organization → Dependable and fault-tolerant systems and networks;
- Computing methodologies → Distributed algorithms.
Repository structure
- deployment, internal, roles, and
main.go: Rabia's implementation in Go and the project's auxiliary code - proofs: proof scripts for the core weak Multivalued consensus part of the Rabia protocol.
- redis-raft: redis-raft related code and instructions
- epaxos: compiled binaries of Paxos and EPaxos for cloudlab machines from various branches in (E)Paxos and (E)Paxos-NP codebases + scripts to run them
- docs: documentations, see below
Documentations
Paper errata -- Errata of our paper
How to install and run Rabia -- install and run Rabia on a single machine or a cluster of machines
How to read Rabia's codebase -- an introduction to Rabia's implementation
Package-level comments -- contains all Go packages' comments, some design assumptions and rationales, which can be served as an in-depth guide to this codebase.
Rabia's Roadmap and ToDos -- for overarching objectives and and granular items
Developer notes -- contains FAQs and some miscellaneous hints for developers
Main contributors
Lewis Tseng, Joseph Tassarotti, Haochen Pan, Jesse Tuğlu, Neo Zhou, Tianshu Wang, Yicheng Shen, Andrew Chapman and Matthew Abbene -- Boston College
Roberto Palmieri -- Lehigh University
Zheng Xiong -- The University of Texas at Austin
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
