/Dynamo

Miniature Version of Amazon Dynamo

Primary LanguageJava

Dynamo

The primary code is located at Dynamo/app/src/main/java/edu/buffalo/cse/cse486586/simpledynamo/

The following are the primary features: Just as the original Dynamo, every node can know every other node. This means that each node knows all other nodes in the system and also knows exactly which partition belongs to which node; any node can forward a request to the correct node without using a ring-based routing.Request routing Unlike Chord, each Dynamo node knows all other nodes in the system and also knows exactly which partition belongs to which node. Under no failures, a request for a key is directly forwarded to the coordinator (i.e., the successor of the key), and the coordinator is in charge of serving read/write operations. Quorum replication For linearizability, implemented a quorum-based replication used by Dynamo. Note that the original design does not provide linearizability, but this design does. The replication degree N is 3. This means that given a key, the key’s coordinator as well as the 2 successor nodes in the Dynamo ring store the key. Both the reader quorum size R and the writer quorum size W 2. The coordinator for a get/put request always contacts other two nodes and get a vote from each (i.e., an acknowledgement for a write, or a value for a read). For write operations, all objects are versioned in order to distinguish stale copies from the most recent copy. For read operations, if the readers in the reader quorum have different versions of the same object, the coordinator picks the most recent version and returns it.