Machi: a distributed, decentralized blob/large file store using chain replication and "Humming Consensus".
2a6e9e2e5c
See http://www.snookles.com/scotttmp/MyFirstMachiAnimation.mov for a very crude animation of a simulated network partition scenario. The animation is about 3.3 MBytes, but it's served by a 5 Mbit/sec network link, please be gentle & patient. Green = UPI/fully-in-sync part of the chain Purple = "Repair" part of the chain Grey = A limited # of older epochs are superimposed to demonstrate disagreement at this instant in time We have an asymmetric partition: 'c' can't send messages to 'a', but all other message passing is OK. These "private" epochs are thrashing between different views of the cluster, each author server making the same proposal over & over again. Author a: [b,a,c,d], epochs=524,528,530,532 Author b: [b,a,c,d], epochs=522,525,527,529,531 Author c: [b,c,d], epochs=521,523,526 Author d: [b,a,c,d], epochs=533 Finally, when the network partition disappears at epoch=533, everyone quickly makes the same decision on how to heal the cluster. The number of edges show the agreement (or lack thereof) of which epoch proposal is "in use" by a participant. The letter labels at the base of each arrow indicate the source/user of that edge. No, there is no replication to one's self, e.g. epoch=536. I've put that there to try extra emphasis that it's a chain of length 1. |
||
---|---|---|
doc | ||
ebin | ||
include | ||
prototype | ||
src | ||
test | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
NOTICE | ||
README.md | ||
rebar | ||
rebar.config | ||
rebar.config.script | ||
TODO-shortterm.org |
Machi
Nota Bene
This source repo is in a state of consolidation of several independent repos. At the moment, most of the prototype code is expected to work -- please see the list below.
Meanwhile, see the README
* files throughout this repo
for helpful hints.
Initial re-porting on 'prototype' directory
demo-day-hack
: work started on theslf/otp-refactoring-step2
branch to copy code from an internal Basho "Demo Day" from theprototype/demo-day-hack
directory to the "official" top of this repo. The end goal of this branch (and perhaps other branches with theslf/otp-refactoring
prefix!) is to create a code base of minimal, functional Machi server & client code.chain-manager
: finishedcorfurl
: finishedtango
: finished
-The Machi team at Basho