• Stars
    star
    226
  • Rank 175,837 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created almost 8 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Consus is a geo-replicated transactional key-value store.
What is Consus?
===============

Consus is a geo-replicated transactional key-value store that upholds strong
consistency and fault tolerance guarantees across multiple data centers. By
geo-replicating data, Consus can can withstand correlated failures up to and
including entire data centers, and reduce latency for clients by directing
them to nearby replicas.

The latency between geographically distinct locations forces storage systems
to navigate the inherent tradeoff between latency and fault tolerance. Systems
may make an operation withstand a complete data center failure by incurring
the latency cost to propagate it to other data centers before reporting that
the operation has finished. On the other side of the tradeoff systems, may
avoid the latency cost by reporting that an operation is complete before it
propagates to other data centers---at the risk that the operation is lost in a
failure and never takes effect in other data centers. In essence, the tradeoff
is entirely a matter of minimizing latency while upholding desirable degree of
fault tolerance. Consus chooses to maintain fault tolerance at all times.

What makes Consus unique?
=========================

For systems that make cross-data center fault tolerance guarantees, wide-area
latency is often the dominating cost. An operation's overall execution time is
heavily dependent upon the number of messages sent via the wide area and the
latency of each message; consequently, reducing the number of messages on the
critical path is an important aspect of optimizing the overall performance of
geo-replicated systems.

Consus can commit a transaction across multiple data centers in three
wide-area message delays during regular execution. Simply sending a message to
a remote data center and receiving acknowledgement of its receipt---the bare
minimum necessary to tolerate a data center failure---requires two message
delays. Protocols such as 2-phase commit or Paxos require two round trips, or
four message delays.

What is the state of Consus?
============================

Consus was the capstone of my Ph.D. thesis.  I have since graduated and have
other commitments that take me away from maintaining the project.  Anyone
trying to use the code should beware the following:

 - There is a deadlock bug that shows up under contending concurrency that I
   never got a chance to track down fully.  The remedy will likely involve
   changing both the key-value store and the transaction manager to make sure
   the wound-wait protocol works correctly.
 - I probably would not want to run this system in production without
   significant further testing.  The generalized paxos pieces are the most
   compex and, despite being the focus of most of my testing, probably not
   something anybody would want to debug at 3am.

More Resources
==============

 - http://consus.io  The consus homepage
 - http://github.com/rescrv/consus-releng  Repository for building and testing
   Consus on a variety of platforms
 - http://github.com/rescrv/consus.io  Source for the consus.io homepage

More Repositories

1

HyperDex

HyperDex is a scalable, searchable key-value store
C++
1,395
star
2

libmacaroons

Macaroons are flexible authorization credentials that support decentralized delegation, attenuation, and verification.
C
491
star
3

HyperLevelDB

A fork of LevelDB intended to meet the needs of HyperDex while remaining compatible with LevelDB.
C++
457
star
4

Replicant

A system for maintaining replicated state machines
C++
115
star
5

e

Library containing high-performance datastructures and utilities for C++
C++
71
star
6

busybee

BusyBee is a high-performance messaging layer
C++
38
star
7

po6

POSIX wrappers for C++
C++
28
star
8

pocdb

Paxos-replicated key-value store in 3 hours or less.
C++
25
star
9

demo-distributed-lock

An example distributed lock using Replicant.
C++
16
star
10

redupe

redupe implements forward error correction
C++
16
star
11

gitswitch

Hubs operate at layer one; switches operate at layer two.
Python
13
star
12

minion

Minion automates building and testing of software projects
Go
7
star
13

encryptify

encryptify encrypts files
C
6
star
14

signify

signify ported from OpenBSD
C
6
star
15

concoord

ConCoord, a Python-based Paxos replicated state machine implementation
Python
4
star
16

libtreadstone

Treadstone manipulates JSON
C++
3
star
17

divvy

divvy implements Shamir's secret sharing
C++
3
star
18

wanal

Over-the-top warnings for C++
C
2
star
19

sesame

sesame is an open source password manager
C
2
star
20

rustypaxos

Paxos in rust. This is a work-in-progress carve-out.
Rust
2
star
21

databuf

Python
2
star
22

gatherbrained

Gatherbrained is a tool for countering scatterbrained thoughts.
Rust
2
star
23

psync

Python
2
star
24

blue

Universe for blue to be developed within.
Rust
2
star
25

firmant

Static web page generator
Python
1
star
26

rprof

A Real Profiler
Python
1
star
27

kvbench

key-value microbenchmark
C++
1
star
28

hack-systems-util

Random Go utilities
Go
1
star
29

gitdepot

Python
1
star
30

hack-systems-random

Go packag for generating random data for tests and validation
C
1
star
31

ygor

ygor is a laboratory assistant
C++
1
star