Distributed File System
This project creates a distributed storage system using Java, networking and distributed systems. It will support multiple concurrent clients sending store, load, list, remove requests. As Dstores may fail and be restarted, and new Dstores can join the datastore at runtime, rebalance operations are required to make sure each file is replicated R times and files are distributed evenly over the Dstores.
The modules will communicate with each other via TCP connections and the datastores will listen on different ports.