Consus is a geo-replicated transactional key-value store.
C++ Makefile C Python M4
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bindings Remove explicitly-labeled unsafe ops. Apr 4, 2017
client Handle TXMAN_FINISHED on client-side. Apr 18, 2017
common Collect in memory state of completed transactions Apr 18, 2017
coordinator Temporarily disable paxos group removal Apr 19, 2017
doc Install from git repositories on Ubuntu Dec 26, 2016
include Remove explicitly-labeled unsafe ops. Apr 4, 2017
kvs Fix mis-replication of empty values. May 4, 2017
m4 Key value storage and transaction layer on top Jul 19, 2016
maint Extend avail-check timeout in tests Apr 19, 2017
man Consus commit squashed for preliminary release May 5, 2016
test Extend avail-check timeout in tests Apr 19, 2017
tools Adjust license to 3-clause BSD Dec 12, 2016
txman Expand debug dump for transaction May 3, 2017
.gitignore Improve the generalize paxos implementation Apr 16, 2017
.tarballignore Consus commit squashed for preliminary release May 5, 2016
LICENSE Adjust license to 3-clause BSD Dec 12, 2016
Makefile.am Fix ( vs { in Makefile.am May 3, 2017
README Update README May 19, 2018
SIGNED-OFF-BY Add a SIGNED-OFF-BY Dec 20, 2016
TODO Temporarily disable paxos group removal Apr 19, 2017
configure.ac Adjust license to 3-clause BSD Dec 12, 2016
consus-debug.cc Adjust license to 3-clause BSD Dec 12, 2016
consus.cc Adjust license to 3-clause BSD Dec 12, 2016
consus.supp Consus commit squashed for preliminary release May 5, 2016
libconsus.pc.in setup.py for python and pkg-config for C Oct 12, 2016
namespace.h Consus commit squashed for preliminary release May 5, 2016
visibility.h Adjust license to 3-clause BSD Dec 12, 2016

README

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