A personal project for designing and implementing a distributed key value store.
- CURD Operations: Design a distributed key value store and support all CRUD operations.
- Membership Protocol: Monitor the replica servers using Membership protocol - preferably Gossip protocol.
- Load balancing: Achieve load balancing via a consistent hashing ring to hash both servers and keys.
- Fault Tolerance: Replicate keys on successive nodes in the ring, starting from the first node at or to the clockwise of the hashed key.
- Consistency Levels: Define and implement consistency levels for Reads and Writes (preferably Quorum)
- Stabilization Protocol: Recreate and balance replicas in case of failure of nodes.
- Coordinator Election: To elect a node as the coordinator (via leader election / paxos)
Following environment variables are exposed for controlling the logging configuration :
SERVER_HOME
(Mandatory) : The server log file will be generated under the following directory$SERVER_HOME/log/replicaXXXX.log
SERVER_LOG_LEVEL
(Default:INFO
): All log4j2 supported log levels - specify level to override the default.SERVER_ID
: The replica-server-Id incase of a cluster environment or a process-Id (threadId) in case of single machine environment (emulated).