İptal Edildi

Java Job by skyrock88


1 Project Description

It consists of two parts.

Part 1

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. A sample configuration file has been provided at the end. Do not change the format of the configuration file.

A user accesses his account using a client program. A client program allows a user to perform one or more of the following tasks:

1. Check the balance of an account.

2. Deposit money into an account.

3. Withdraw money from an account.

4. Transfer money from one account to another.

5. Determine the total amount of money in the banking system.

The first four tasks display the new balance in the appropriate account(s) after the task has been performed. Take suitable precautions to ensure that an account balance never becomes negative. When transferring money, add a random delay between when the money is withdrawn from the source account and when the money is deposited into the destination account to prolong the transfer. Perform the last task by taking a strongly consistent snapshot of the system (i.e., all account values can co-exist at the same time and there are no transfers in progress). You can use the freezing-based protocol discussed in the class to record a strongly consistent snapshot of the system. You can assume that a client executes tasks serially. For the first three tasks (inquiry, deposit and withdrawal), a client connects to the server that hosts the account involved in the task. For the fourth task, it connects to the server that hosts the account from which the money is being transferred. For the fifth task, it acts as a coordinator responsible for initiating the snapshot protocol and collecting the local states. Note that a client may need to connect to different servers to perform different tasks. Also, to obtain full credit, your system should be able to handle multiple instances of snapshot protocol running concurrently. Also, a client should be able to

run in both interactive mode (accept input from the keyboard) as well as batch mode (accept input from a file).

A sample input file has also been provided at the end.

Part 2

Implement a testing mechanism to ascertain that your snapshot protocol indeed yields a strongly consistent snapshot of the system (e.g., using vector time stamps or some other data structure).

2 Submission Information

You are required to submit all the source files necessary to compile the program and run it. Also, submit a README file that contains instructions to compile and run your program.

Beceriler: Java

Daha fazlasını görün: take two interactive, set data structure, program data vector, program coordinator, indeed co, data structure set, data structure note, task number project, protocol testing, freezing, custom keyboard, set project server 2013, project data structure program, program structure project, set server 2013, custom format number, distributed banking, configuration project server 2013, check transfer files, banking full project, project data structure using, implement protocol, distributed banking system, file transfer client server, banking program

İşveren Hakkında:
( 0 değerlendirme ) Richardson, United States

Proje NO: #4453906

1 freelancer bu iş için ortalamada 200$ teklif veriyor


Hired by the Employer

in 4 gün içinde200$ USD
(186 Değerlendirme)