There are many different types of distributed computing systems and many
challenges to overcome in successfully designing one. The main goal of a
distributed computing system is to connect users and resources in a transparent,
open, and scalable way. Ideally this arrangement is drastically more fault
tolerant and more powerful than many combinations of stand-alone computer
systems.
Openness
Openness is the property of distributed systems such that each subsystem is
continually open to interaction with other systems (see references). Web
Services protocols are standards which enable distributed systems to be extended
and scaled. In general, an open system that scales has an advantage over a
perfectly closed and self-contained system.
Consequently, open distributed systems are required to meet the following
challenges:
- Monotonicity
- Once something is published in an open system, it cannot be taken back.
- Pluralism
- Different subsystems of an open distributed system include
heterogeneous, overlapping and possibly conflicting information. There is no
central arbiter of truth in open distributed systems.
- Unbounded nondeterminism
- Asynchronously, different subsystems can come up and go down and
communication links can come in and go out between subsystems of an open
distributed system. Therefore the time that it will take to complete an
operation cannot be bounded in advance (see unbounded nondeterminism).
Drawbacks and disadvantages
Technical issue
If not planned properly, a distributed system can decrease the overall
reliability of computations if the unavailability of a node can cause disruption
of the other nodes. Leslie Lamport famously quipped that: "A distributed system
is one in which the failure of a computer you didn't even know existed can
render your own computer unusable."
Troubleshooting and diagnosing problems in a distributed system can also
become more difficult, because the analysis may require connecting to remote
nodes or inspecting communication between nodes.
Many types of computation are not well suited for distributed environments,
typically owing to the amount of network communication or synchronization that
would be required between nodes. If bandwidth, latency, or communication
requirements are too significant, then the benefits of distributed computing may
be negated and the performance may be worse than a non-distributed environment.
|