https://github.com/haochenpan/rabia
Rabia: Simplifying State-Machine Replication Through Randomization (SOSP 2021)
https://github.com/haochenpan/rabia
consensus distributed-systems fault-tolerance formal-verification reliability state-machine-replication
Last synced: about 2 months ago
JSON representation
Rabia: Simplifying State-Machine Replication Through Randomization (SOSP 2021)
- Host: GitHub
- URL: https://github.com/haochenpan/rabia
- Owner: haochenpan
- License: apache-2.0
- Created: 2021-08-09T14:45:36.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-16T15:19:59.000Z (almost 3 years ago)
- Last Synced: 2024-01-29T21:15:57.155Z (about 2 years ago)
- Topics: consensus, distributed-systems, fault-tolerance, formal-verification, reliability, state-machine-replication
- Language: Go
- Homepage:
- Size: 58.8 MB
- Stars: 37
- Watchers: 5
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://dl.acm.org/doi/10.1145/3477132.3483582)," describes Rabia's design and evaluations in detail ([SOSP Artifact Review Summary](https://sysartifacts.github.io/sosp2021/summaries/rabia.html)) 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](https://github.com/zhouaea/epaxos) and
[(E)Paxos-NP](https://github.com/zhouaea/epaxos-single) codebases + scripts to run them
- docs: documentations, see below
## Documentations
[Paper errata](docs/errata.md) -- Errata of our paper
[How to install and run Rabia](docs/run-rabia.md) -- install and run Rabia on a single machine or a cluster of machines
[How to read Rabia's codebase](docs/read-rabia.md) -- an introduction to Rabia's implementation
[Package-level comments](docs/package-level-comments.md) -- 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](docs/rabia-todo.md) -- for overarching objectives and and granular items
[Developer notes](docs/notes-for-developers.md) -- 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