- LSM-Tree needs is used as our storage data structure.
- Consistent Hashing is used as our partition rebalancing strategy (Only adding a new node should be supported).
- Leaderless replication is used with configurable quorum sizes.
Zarka have two kinds of applications:
- Zarka Server: a node that holds data partitions and replicas. You should provide enough logs in the console so your TA can see the state of the server (e.g., received requests, incoming data, replicas created, …. etc.)
- Zarka Client: a command line interface where user can send two types of requests:
add
( key, value)get
( key )
Both key and value are string values.
Zarka Client will pick any Zarka Server nodes at random and it will be the coordinator to execute his request.
There is a configuration file used by all nodes to define system parameters such as:
- Number of Nodes
- TCP ports for the nodes
- Quorum Write
- Quorum Read
- Replication Factor