/Zarka

Implementation of a Key-Value store that is inspired by Cassandra's architecture to be named "Zarka".

Primary LanguageJavaMIT LicenseMIT

License Language

Zarka

The Topology for Zarka

image

Features

  1. LSM-Tree needs is used as our storage data structure.
  2. Consistent Hashing is used as our partition rebalancing strategy (Only adding a new node should be supported).
  3. Leaderless replication is used with configurable quorum sizes.

The Operations and Data Flow

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.

The Configuration File

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

Its Created Logo

Zarka