For research related to Humming Consensus: errata & corrections, source code for future work, etc.
April 2016 Reviewed paper for the Workshop on Principles and Practice of Consistency for Distributed Data 2016, a satellite workshop of EuroSys 2016: "Coordinating Distributed System Configuration Changes with Humming Consensus"
March 2016 Presentation at the Erlang Factory San Francisco 2016 conference: "Build big with tiny tools: immutability, checksums, and CRDTs"
November 2015 Presentation at the RICON 2015 conference: "Managing Chain Replication Metadata with Humming Consensus".
October 2015 Design document: "Chain Replication metadata management in Machi, an immutable file store: introducing the 'humming consensus' algorithm"
At the moment, there is only a single implementation of Humming Consensus: embedded inside of Machi, a distributed blob/file store. Additional implementations will be listed here, when they exist.
- Machi's source repository: at GitHub
- The Erlang source module that implements Humming Consensus: machi_chain_manager1.erl
- Hands-on tutorial to experiment with Machi's HC implementation: doc/humming-consensus-demo.md
Please see the README
files and the documentation in the source
repository's doc
directory for additional information to help orient
yourself.
The source code for
machi_chain_manager1.erl
is not very beautiful. The Git commit log shows that it has undergone
a huge amount of change. Writing it was a learning experience. In
the beginning, I (Scott) didn't know if the technique would work.
I think I've learned a lesson in why grad student research code
usually isn't pretty: the research & discovery process itself isn't
always pretty. ^_^
Having said that, this implementation is also fairly well tested using QuickCheck and other property-based testing techniques. The implementation of Humming Consensus is entangled with Chain Replication and some other parts of Machi ... but as far as I have been able to tell, this implementation does indeed work as I'd hoped that it would. It can thrash & flap for longer than is necessary in A 100% Perfect World, but the code isn't 100% perfect yet. In my opinion, it is good enough to put into production and see what happens.
This source repo will attempt to create simplified version of Humming Consensus, as described in the PaPOC paper mentioned above.
Development will take place on Git branches with an hc-lite
prefix.
If you are viewing this document via GitHub's Web site, then you are
probably viewing the master
branch of this document. If you wish to
spy on the latest HC-lite development, please look at the Git branches
with hc-lite
in the name.
Contact me via my Twitter
handle,
@sl``fri tchie
or by email at
``nospam @``snookles``。com``
... please
remove any extra backtick
quotes and extra spaces.