An implementation of the Raft distributed consensus algorithm in Rust.
We set out to implement the Raft Consensus Algorithm in Rust. We joined an existing project by Michael, called Schooner. Raft is a Distributed Consensus Algorithm - this means that it is a system that can establish a consistent log across multiple machines in an asynchronous, lossy network (like those in the real world).
Raft was designed with understandability (and pedagogy) in mind, as opposed to Paxos, another consensus algorithm that is renowned for its obscure definition. Raft is new, but as a testament to its understandability, there are many more Open Source implementations of it than Paxos, despite Raft being about 20 years younger than Paxos.
Almost all the project documentation is in the project wiki, including a Glossary of terms, a condensed Raft guide, and an overview of the design of Schooner.
You will need to install bleeding-edge Rust: we've been using mozilla/rust#35f3f7a
Then, from this directory run make. make test will build and run
the tests (of which there are a few, but not many).
Other links about the Raft Algorithm:
- http://raftconsensus.github.io/
- https://www.youtube.com/watch?v=YbZ3zDzDnrw
- http://www.infoq.com/presentations/raft
- http://www.reddit.com/comments/1jm6c8
The Wikipedia pages, describing:
- The Consensus Problem: http://en.wikipedia.org/wiki/Consensus_(computer_science)
- Paxos: http://en.wikipedia.org/wiki/Paxos_(computer_science)
- Raft: http://en.wikipedia.org/wiki/Raft_consensus_algorithm
This was a project submitted as part of the Spring 2014 UVA Computer Science Operating Systems Course, and was developed by a group consisiting of:
- Michael Peterson (Project Initiator)
- Chun Wang
- Esteban Amas
- Nathan Typanski
- Sam Elliott
The library is licensed under the permissive
MIT License, as defined in the
LICENCE file.