Distributed computing is a method of computer processing in which
different parts of a program are run simultaneously on two or more computers
that are communicating with each other over a network. Distributed computing is
a type of segmented or parallel computing, but the latter term is most
commonly used to refer to processing in which different parts of a program run
simultaneously on two or more processors that are part of the same computer.
While both types of processing require that a program be segmented�divided into
sections that can run simultaneously, distributed computing also requires that
the division of the program take into account the different environments on
which the different sections of the program will be running. For example, two
computers are likely to have different file systems and different hardware
components.
An example of distributed computing is BOINC, a framework in which large
problems can be divided into many small problems which are distributed to many
computers. Later, the small results are reassembled into a larger solution.
Distributed computing is a natural result of using networks to enable
computers to communicate efficiently. But distributed computing is distinct from
computer networking or fragmented computing. The latter refers to two or
more computers interacting with each other, but not, typically, sharing the
processing of a single program. The World Wide Web is an example of a network,
but not an example of distributed computing.
There are numerous technologies and standards used to construct distributed
computations, including some which are specially designed and optimized for that
purpose, such as Remote Procedure Calls (RPC) or Remote Method Invocation (RMI)
or NET
Remoting.
Organization
Organizing the interaction between each computer is of prime importance. In
order to be able to use the widest possible range and types of computers, the
protocol or communication channel should not contain or use any information that
may not be understood by certain machines. Special care must also be taken that
messages are indeed delivered correctly and that invalid messages are rejected
which would otherwise bring down the system and perhaps the rest of the network.
Another important factor is the ability to send software to another computer
in a portable way so that it may execute and interact with the existing network.
This may not always be possible or practical when using differing hardware and
resources, in which case other methods must be used such as cross-compiling or
manually porting this software.
|