Giter Club home page Giter Club logo

rabia's Introduction

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.