Jadikan Inspirasimu

Minggu, 22 November 2015

Distributed Systems

EXERCISES FOR CHAPTER 1 : Characterization of Distributed Systems


1.11 Question

List the three main software components that may fail when a client process invokes a method in a server object, giving an example of a failure in each case. Suggest how the components can be made to tolerate one another’s failures.


1.11Answer :

The three main software components that may fail are:

  • the client process e.g. it may crash
  • the server process e.g. the process may crash
  • the communication software e.g. a message may fail to arrive


The failures are generally caused independently of one another. Examples of dependent failures:

  • if the loss of a message causes the client or server process to crash. (The crashing of a server would cause a client to perceive that a reply message is missing and might indirectly cause it to fail).
  • if clients crashing cause servers problems.
  • if the crash of a process causes a failures in the communication software.

Both processes should be able to tolerate missing messages. The client must tolerate a missing reply message after it has sent an invocation request message. Instead of making the user wait forever for the reply, a client process could use a timeout and then tell the user it has not been able to contact the server.
A simple server just waits for request messages, executes invocations and sends replies. It should be absolutely immune to lost messages. But if a server stores information about its clients it might eventually fail if clients crash without informing the server (so that it can remove redundant information). 
The communication software should be designed to tolerate crashes in the communicating processes. For example, the failure of one process should not cause problems in the communication between the survivingprocesses.