"Framework" for building a decentralized gossip based distributed system with accrual failure detection
Python
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.
elastica
tests
README.md

README.md

Elastica is an implementation of: The Phi Accrual Failure Detector and Amazons paper on Gossip with inspiration from Lookup data in p2p system

(A tweaked Chord (DHT) implementation where |finger table| = |cluster|)

Suitable if you are building a system that is...
* Elastic  -- Add new machines in runtime (with no downtime)
* Decentralized  -- Every node in the cluster is identical.  
* Fault tolerant  -- Replace failed nodes with no downtime. 
* Self-stabilizing  -- The system will end up in a correct state no matter what state it is initialized with.

Limitations:

* No way to explicitly decomission a node

* Only support for one seed

* Two tcp connections between each pair of nodes


Miscellaneous
* Simple rpc/messaging mechanism
* Inconsistent implementation of 'cumulative distribution function' for Exponential Distribution  
   (see https://issues.apache.org/jira/browse/CASSANDRA-2597)
* A generic Partitioner (keyspace=[0,10], A=[0,3], B=[4,7], C=[8,10]) (too key value specific?)
   (proposal: - consistent way to map a host into a key range and vice versa (get_range(host), get_node(range)). 
              - auto adjust if node goes up/down. 
              - auto bootstrap (half the range of the range with most load)     
              - redundancy/replication?
              - $1
   )
* Distinguish between "address I tell people about" and "address I bind to (think ec2, nat)
  currently "solved" by binding to ip 0.0.0.0 and tell about "external" ip

Dependencies:
* Tornado 1.2.1 (http://www.tornadoweb.org/)
* psutil (http://code.google.com/p/psutil/)

Licensed under Apache version 2