As the main aim of this project is to design and implement a fault tolerance system for highly dynamic distributed systems using an agent based approach, the actual design implemented in developing this application is given in this chapter. A mobile agent based approach is followed to identify the failures across the dynamic distributed networks and a fault tolerant environment is provided across this approach. A detailed explanation to the front end and database design is given as below

Front end design

A virtual dynamic distributed network is created using Java in this project and to create a distributed network two servers and four clients modules are created in this project and these nodes are assumed to be in a distributed nature.  A single server module can handle two clients in this design and thus a total of four clients are managed by the two independent and distributed servers. These two servers are controlled by a master server module, where these two servers are the distributed sample of the single master server. The actual programmatic implementation and design aspects to create these modules are given as below

Master server

Master server is the key component in this process and can maintain the two independent and distributed servers. Master server is represented with a server icon and when this master server icon is clicked by the user; the actual functionality of the application is started. On and Off radio buttons are provided against the master server icon and when the user checks the On button two server modules are invoked and when the user clicks on the Off button, users are asked to choose one of the servers to terminate its operations. Once the On button is clicked, the actual process is started and it is explained in detail as below

Server modules

As it is already mentioned two servers are created and considered as the distributed servers and each server can handle two clients and in future more clients can be added as per the user requirements and this provision is also provided at the design level.  A server module is composed of few aspects and the detailed explanation to the server operations is as given below. A distributed server is represented by the server name like Server A and On and Off radio buttons are provided against the server icon. When the user clicks on the On button, the server operations are initiated and the actual operations are listed below.

Send data

Send data is the primary operation available for both the servers and this option is provided to the user across the server in the form a simple button. Whenever the user clicks on the send data button, a browse window is opened and the user can select the desired file to be sent from the servers. Once the file is selected, the very next operation is to choose the client as each server can handle two or more servers. In general the clients are identified with the client name or IP address. To simplify the concept a unique number is assigned to the clients and this number is assumed to be IP address of the client, as this application is a standalone and no network operations are included to simply the demonstration.

Once the client is selected, send button is clicked against the server icon and then the sending process is initiated and this process is represented graphically till the data is send to the client.  The number of packets transmitted to the client is also displayed to user. Users are provided with an option to check the total number of packets being transmitted before sending the data to the client and also can check the actual number of packets transmitted to the client. User can send the data to any of the clients by choosing the client unique ID as mentioned above and once the data is sends to the client, it is stored in the client database against the server name, number of packets send and the client ID.

Receive data

Servers can receive the data from the clients as well and to achieve this, a separate button is provided to the users against the server icon. Once this button is clicked server can select the desired client from where the data should be received and once selected the corresponding data is stored across the server database table.  Total number of packets received can also be calculated across this module.

Link status

Link status from the server to the client and client to server can be checked using module. Status of the link can be checked by clicking on a button before sending or receiving data and if the status is On, then the sending or receiving is done successfully and if the status if Off, the corresponding process are terminated.  Users can check the status of the link at any point of time and if anything goes wrong across the modules, the link status is automatically set to Off and this indicates that there are some failures across the distributed networks and these failures are detected in this project and an alternative fault tolerance system is developed to set the link status again On for a continuous communication mechanism.

Add clients

Users can add more clients with the help of the button available against the server icon and whenever a client is added to the network a unique ID is provided to the client and it can be accessed through the ID.  Once the client is added, a separate row is created in the database table and the client details are maintained in the table and sever can send data or receive data from the client added. When the Add client button is clicked by the user, they are provided with an option to choose the desired server to which the clients should be added. 

This paper is written and submitted by sai