Machi: a distributed, decentralized blob/large file store using chain replication and "Humming Consensus".
Find a file
Scott Lystig Fritchie 2a6e9e2e5c Frame-by-frame animation of GraphViz-generated frames, first draft (comments)
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.
2015-04-16 00:23:07 +09:00
doc Add doc/README.md 2015-04-08 18:08:48 +09:00
ebin Single server client & server code (squashed) 2015-04-01 16:14:24 +09:00
include WIP: mess, part 2 2015-04-15 17:49:56 +09:00
prototype Status update for the master branch 2015-04-02 16:41:12 +09:00
src Frame-by-frame animation of GraphViz-generated frames, first draft (comments) 2015-04-16 00:23:07 +09:00
test Frame-by-frame animation of GraphViz-generated frames, first draft (comments) 2015-04-16 00:23:07 +09:00
.gitignore Add -spec statements to machi_util.erl, clean up the fallout 2015-04-08 18:39:55 +09:00
LICENSE Add APL v2 LICENSE file 2015-03-02 17:12:39 +09:00
Makefile Add first basic round of EDoc documentation, 'make edoc' target 2015-04-08 17:32:01 +09:00
NOTICE Add NOTICE 2015-03-02 21:06:31 +09:00
README.md Now working on slf/otp-refactoring-step2 branch 2015-04-06 18:50:43 +09:00
rebar Update rebar 2015-04-10 22:01:12 +09:00
rebar.config WIP: more projection refactoring, eunit tests pass for the moment 2015-04-09 12:16:58 +09:00
rebar.config.script Single server client & server code (squashed) 2015-04-01 16:14:24 +09:00
TODO-shortterm.org WIP: Fix bug that flaps inside an inner projection, oops! 2015-04-14 18:23:00 +09:00

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 the slf/otp-refactoring-step2 branch to copy code from an internal Basho "Demo Day" from the prototype/demo-day-hack directory to the "official" top of this repo. The end goal of this branch (and perhaps other branches with the slf/otp-refactoring prefix!) is to create a code base of minimal, functional Machi server & client code.
  • chain-manager: finished
  • corfurl: finished
  • tango: finished

-The Machi team at Basho