Intro
LogCabin is a distributed system that provides a small amount of highly replicated, consistent storage. It is a reliable place for other distributed systems to store their core metadata and is helpful in solving cluster management issues. LogCabin is still in early stages of development and is not yet recommended for actual use.
We've written a paper about the Raft consensus algorithm which LogCabin uses internally. A draft of this paper is available : read it here (PDF).
Source code
LogCabin is still in early stages of development and is not yet recommended for actual use. The source code is here: https://github.com/logcabin/logcabin
...
Please report bugs and feature requests to https://github.com/logcabin/logcabin/issues . You'll need a github account (free) to submit new issues.
Old Topics
Warning: these are design notes from initial stages of LogCabin and are are probably not relevant any longer.
...
Other Raft Implementations
For lack of a better sort order, these are sorted by language, then name.
Name | Primary Authors | Language | License | Status | Web site | Row last updated* |
---|---|---|---|---|---|---|
bspolley/raft | Alex Kaiser, Brennan Polley, Helen Weng (Berkeley) | Bloom | N/A | Leader election and log replication at least partially implemented. Actual status unclear. | https://github.com/bspolley/raft | 2013-05-18 |
noeleo/raft | Noel Moldvai, Rohit Turumella, Josh Muhlfelder, James Butkovic (Berkeley) | Bloom | Simplified BSD | Leader election and log replication implemented (barring a few open Issues on github). No persistence, static membership, no log compaction. | https://github.com/noeleo/raft | 2013-05-25 |
whitewater | Adam Midvidy, Anh Mai, Karoun Kasraie, Sanketh Katta (Berkeley) | Bloom | MIT | Leader election and log replication implemented but with some correctness issues. Static membership. No log compaction. | https://github.com/amidvidy/whitewater | 2013-05-18 |
NRaft | Bert Willems (Premotion) | C# | MIT | N/A | https://github.com/PremotionSoftwareSolutions/NRaft | 2013-09-02 |
RAFTiNG | Cyrille Dupuydauby | C# | Apache2 | N/A | https://github.com/dupdob/RAFTiNG | 2013-09-02 |
raft-clj | John Weaver | Clojure | Eclipse | N/A | https://github.com/saebyn/raft | 2013-06-20 |
draft | Patrick Van Stee | Elixir | N/A | N/A | https://github.com/vanstee/draft | 2013-06-20 |
eraft | Uwe Dauernheim | Erlang | N/A | N/A | https://github.com/djui/eraft | 2013-05-18 |
huckleberry | Jakob Sievers | Erlang | N/A | N/A | https://github.com/cannedprimates/huckleberry | 2013-05-18 |
rafter | Andrew J Stone (Basho) | Erlang | Apache2 | N/A | https://github.com/andrewjstone/rafter | 2013-05-31 |
rafterl | Eric Moritz | Erlang | N/A | Just started, not sure | https://github.com/ericmoritz/rafterl | 2013-05-25 |
Flotten | Henrik Feldt (Jayway) | F# | MIT | Some leader election implemented; log replication unclear. Static membership. No log compaction. | https://github.com/haf/Flotten | 2013-05-18 |
apokalyptik/raft | Demitrious Kelly | Go | GPL3 | N/A | https://github.com/apokalyptik/raft | 2013-09-02 |
graft | Ben Mills (Braintree) | Go | N/A | N/A | https://github.com/dev-urandom/graft | 2013-09-02 |
go-raft | Ben B. Johnson (Sky database) | Go | MIT | Leader election and log replication implemented. Can reconfigure cluster only by adding/removing one server at a time. Log compaction implemented though with a known bug. | https://github.com/benbjohnson/go-raft | 2013-07-05 |
peterbourgon/raft | Peter Bourgon (SoundCloud) | Go | Simplified BSD | Leader election, log replication, reconfiguration implemented. Compaction not yet implemented. | https://github.com/peterbourgon/raft | 2013-07-05 |
pontoon | Matt Reiferson | Go | N/A | N/A | https://github.com/mreiferson/pontoon | 2013-09-02 |
seaturtles | Lionel Barrow (Braintree) | Go | N/A | N/A | https://github.com/lionelbarrow/seaturtles | 2013-09-02 |
kontiki | Nicolas Trangez | Haskell | LGPL | Leader election implemented; log replication in progress. | https://github.com/NicolasT/kontiki | 2013-05-18 |
mgodave/raft | Dave Rusek | Java | N/A | Leader election implemented; no log replication yet? | https://github.com/mgodave/raft | 2013-06-02 |
Raft-JVM | Tim Kellogg (Alteryx) | Java | N/A | N/A | https://github.com/tkellogg/Raft-JVM | 2013-06-02 |
raft.js | Ben Johnson (Sky) | Javascript | MIT | N/A | https://github.com/benbjohnson/raft.js | 2013-09-02 |
ocaml-raft | Heidi Howard (Cambridge) | OCaml | N/A | N/A | https://github.com/heidi-ann/ocaml-raft | 2013-09-02 |
py-raft | Toby Burress | Python | public domain | N/A | https://github.com/kurin/py-raft | 2013-09-02 |
floss | Alexander Flatter | Ruby | MIT | N/A | https://github.com/celluloid/floss | 2013-06-20 |
harryw/raft | Harry Wilkinson | Ruby | MIT | N/A | https://github.com/harryw/raft | 2013-06-20 |
orenmazor/Raft | Oren Mazor | Ruby | MIT | N/A | https://github.com/orenmazor/Raft | 2013-09-02 |
zodiac-prime | Evan Phoenix (LivingSocial) | Ruby | MIT | N/A | https://github.com/evanphx/zodiac-prime | 2013-09-02 |
* This information will become stale. Please prod Diego if you want it updated.This information has moved to the Raft web page: http://raftconsensus.github.io
Related work
Chubby (Google)
...
Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems (PODC '88)