Akka
A distributed key-value store in Akka
The goal of this project is to provide a distributed key-value store using Akka. The store stores each data element into R replicas to tolerate up to R-1 simultaneous failures without losing any information. Upon the failure of a node, the data it stored is replicated to a new node to ensure that the system has again R copies.
The system uses the Chord Algorithm to partition the keyspace which make it fully scalable, a finger table of just 16 entries provides support for up to 65 536 nodes. Besides, client centric consistency models are always guaranteed.
The architecture proposed is based in layers. The first layer is the API layer which provides an easy way to interact with the cluster, which is on top of Akka as it is shown below.
Finally, the deployment is made using Docker and Docker Compose. It is based on minimum two containers: the first one is the seed, the node of the cluster where other nodes should join automatically at startup.