Distributed Banking System with implementation for Snapshot protocol by Client using TCP Socket Programming. There are two parts:
Part1: You are required to develop a simple distributed banking system. The banking system is implemented using a set of servers, where each server hosts a set of accounts. You can assume that the set of servers in the system and the set of accounts hosted by a server are both static and do not change at run time. The information required to initialize the banking system (e.g., the number of servers, the location of each server, the set of accounts hosted by each server, the initial balance in each account) is stored in a configuration file.
Part2: Implement a testing mechanism to ascertain that your snapshot protocol indeed yields a strongly consistent snapshot of the system by the client.