Skip to content

rschildmeijer/elastica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 

Repository files navigation

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

About

"Framework" for building a decentralized gossip based distributed system with accrual failure detection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages