Distributed
computing
A distributed system is a system whose
components are located on different
networked computers, which
communicate and coordinate their actions
by passing messages to one another.[1][2]
Distributed computing is a field of
computer science that studies distributed
systems.
The components of a distributed system
interact with one another in order to
achieve a common goal. Three significant
challenges of distributed systems are:
maintaining concurrency of components,
overcoming the lack of a global clock, and
managing the independent failure of
components.[1] When a component of one
system fails, the entire system does not
fail.[3] Examples of distributed systems
vary from SOA-based systems to
massively multiplayer online games to
peer-to-peer applications.
A computer program that runs within a
distributed system is called a distributed
program,[4] and distributed programming is
the process of writing such programs.[5]
There are many different types of
implementations for the message passing
mechanism, including pure HTTP, RPC-like
connectors and message queues.[6]
Distributed computing also refers to the
use of distributed systems to solve
computational problems. In distributed
computing, a problem is divided into many
tasks, each of which is solved by one or
more computers,[7] which communicate
with each other via message passing.[8]
Introduction
The word distributed in terms such as
"distributed system", "distributed
programming", and "distributed algorithm"
originally referred to computer networks
where individual computers were
physically distributed within some
geographical area.[9] The terms are
nowadays used in a much wider sense,
even referring to autonomous processes
that run on the same physical computer
and interact with each other by message
passing.[8]
While there is no single definition of a
distributed system,[10] the following
defining properties are commonly used as:
There are several autonomous
computational entities (computers or
nodes), each of which has its own local
memory.[11]
The entities communicate with each
other by message passing.[12]
A distributed system may have a common
goal, such as solving a large
computational problem;[13] the user then
perceives the collection of autonomous
processors as a unit. Alternatively, each
computer may have its own user with