Systems are distributed for either or both of two main reasons:
A distributed system consists of a number of components, which are themselves computer systems. The components are connected by some communications medium, usually a sophisticated network. Applications execute by using a number of processes in different component systems. These processes communicate and interact to achieve productive work within the application. A distributed system has a number of advantages over a single computer system:
It can be more fault tolerant. It can be designed so that if one component of the system fails then the others will continue to work. Such a system will provide useful work in the face of quite a large number of failures in individual component systems.
It is more flexible. A distributed system can be made up from a number of different components. Some of these components may be specialized for a specific task, others may be general purpose.
It is easier to extend. More processing, storage or other power can be obtained by increasing the number of components.
It is easier to upgrade. When a single large computer system becomes obsolete all of it has to be replaced in a costly and disruptive operation. A distributed system may be upgraded in increments by replacing individual components without a major disruption, or a large cash injection.
Distributed Systems also introduce several problems not encountered in centralized systems.
They are significantly more complex.
They introduce problems of synchronization between processes.
They introduce problems of maintaining consistency if data.
In general, there is no longer a central management entity in control of the whole system.