Assignment title: Management
Need to implement in C, keep the implementation simple and easy to understand.
Implement an in-memory distributed key-value (KV, integer as keys and strings as values) store. The KV store should be able to handle data larger than any one node's memory capacity. That is, at any given time, a single node might not have all the data. The deliverables will include:
• A server program that accepts get/set requests from the clients and returns a valid response. The server will communicate with it's peer processes (spread across the network) to maintain a consistent view of the key-value database.
• A client that communicates with a server to perform get/set operations. The client should learn the server address via a coordinator/proxy process.
• A proxy/coordinator process keeps track of available servers and data stored in those servers. A client connects to the proxy/coordinator process to learn the address of a server that it should connect for performing set/get operations. The proxy server also acts as a load-balancer and ensures a uniform workload distribution among various servers.
API for client to proxy/coordinator communication?
API for client to server communication?
Ideally, it should be possible to swap out any of your client/proxy/server processes for a different one that implements the same API.
• README : file with details of implementation
• TEST: how to test
• MAKEFILE
• Include comments in the code