An implementation of the Raft consensus protocol in the Bloom programming language.
Ruby
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.
docs
examples
lib
src
test
.gitignore
LICENSE.md
README.md

README.md

whitewater

An implementation of the Raft consensus protocol with static membership in the Bloom programming language.

We have implemented Leader Election and Log Replication as two separate modules.

For the purpose of test driving the log replication module, we have also implemented an ordered, consistent, and distributed simple calculator.

This was made as a final project for Joe Hellerstein and Peter Alvaro's Programming the Cloud course at UC Berkeley.

Note

This is currently a work in progress. We believe most of the functionality is in place, but there are a few issues that could potentially cause data loss or corruption. Thus in its current state, we do not recommend the use of whitewater in production.

Module Documentation

Election

Server State

Timeout

Log

Ordered State Machine

Acknowledgements

Thanks to Diego Ongaro for providing guidance on the Raft protocol and for reviewing our code for correctness issues.

Thanks to Peter Alvaro for general guidance and advice on how to best implement configurable timers in Bloom.