This project involves the implementation of a distributed bookstore. The goals of the project are to introduce students to client- and server-side remote procedure calls and multi-tier distributed systems. The students will implement both Java RMI or XML-RPC to implement their store. The store carries only a few books, since the focus of the assignment is not large-scale data-management, but instead is intended to help students understand the design challenges associated with large-scale multi-tier distributed services. In this assignment the students run their code across three separate computers.
The bookstore employed a two tier (front-end and back- end) design consisting of three total components. The front- end tier is a server that accepts customer requests for books, performs initial request processing, and interacts with the back-end components. Three key operations are supported by the front-end server: search, lookup, and buy. The back-end tier includes a catalog server and an order server. The catalog server is similar to a database. It maintains a list of all books in stock in the store, the cost of each book, and the general topic area of each book for searching purposes. The catalog server responds to search and lookup queries from the front-end server. The order server maintains a master record of all orders received, and is responsible for updating the catalog server when new shipments of books arrive. Every time a buy operation is issued from a customer, the order server is contacted by the front-end server to complete the transaction. The order server frequently interacts with the catalog server to ensure that the catalog server correctly responds to queries from customers regarding the price and quantity of books in stock. Issues related to synchronization among the servers and concurrent requests had to be considered in the design of the order server.
As part of the write-up for Project , you should also perform an evaluation of the performance of their system. They measure the average response time for customer requests under different levels of server load. The evaluation allows students to appreciate the importance of making good design decisions, especially when customer satisfaction is at stake. The students also describe the design of their system, and reflect on potential performance bottlenecks in their write-ups.
Finally in your project you will need a GUI as well. It does not have to be anything beautiful or complex. I just want to be able to control your program by using a GUI that is going to respond to the steps of your protocol and which allows the observer to control the movements.
The documentation should contain