/never-break-the-chain

data storage using a chain-replication system

Primary LanguageJava

Distributed hash store in a chain-replication system

A hashmap is used as the underlying datastore and we provide two functionalities:
get(key) - to fetch the value of the key from the hashmap
increment(key, incVal) - increment the value of key by incVal

System is concurrency-resilient and also heals the chain when a node goes down or a new one is added. It leverages Zookeeper to maintain the chain. The chain nodes are added to a control_path node on Zookeeper

The following line adds a node running at {grpc_host_and_port} to the chain
java -jar chainreplication.jar your_name grpc_host_port zookeeper_host_port_list control_path

Protobuf files have been provided to build a client. chain.proto gives the request structure to access the chain for data. chain_debug.proto provides debugging requests to the chain to get a snapshot of the hashmap at any given time or to kill a server in the chain.