Distributed Computing

Distributed Computing
What is Distributed Computing ?

Distributed computing is a field of computer science that studies distributed systems. 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 from any system. The components interact with one another in order to achieve a common goal. Three significant characteristics of distributed systems are: concurrency of components, lack of a global clock, and independent failure of components. 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 (and distributed programming is the process of writing such programs). There are many different types of implementations for the message passing mechanism, including pure HTTP, RPC-like connectors and message queues.

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, which communicate with each other via message passing.

Parallel and Distributed computing 

Distributed systems are groups of networked computers which share a common goal for their work. The terms "concurrent computing", "parallel computing", and "distributed computing" have much overlap, and no clear distinction exists between them. The same system may be characterized both as "parallel" and "distributed"; the processors in a typical distributed system run concurrently in parallel. Parallel computing may be seen as a particular tightly coupled form of distributed computing, and distributed computing may be seen as a loosely coupled form of parallel computing. Nevertheless, it is possible to roughly classify concurrent systems as "parallel" or "distributed" using the following criteria:

  • In parallel computing, all processors may have access to a shared memory to exchange information between processors.
  • In distributed computing, each processor has its own private memory (distributed memory). Information is exchanged by passing messages between the processors.

Architectures

Various hardware and software architectures are used for distributed computing. At a lower level, it is necessary to interconnect multiple CPUs with some sort of network, regardless of whether that network is printed onto a circuit board or made up of loosely coupled devices and cables. At a higher level, it is necessary to interconnect processes running on those CPUs with some sort of communication system.

Distributed programming typically falls into one of several basic architectures: client-server, three-tier, n-tier, or peer-to-peer; or categories: loose coupling, or tight coupling.

  • Client-server: architectures where smart clients contact the server for data then format and display it to the users. Input at the client is committed back to the server when it represents a permanent change.
  • Three-tier: architectures that move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are three-tier.
  • n-tier: architectures that refer typically to web applications which further forward their requests to other enterprise services. This type of application is the one most responsible for the success of application servers.
  • Peer-to-peer: architectures where there are no special machines that provide a service or manage the network resources. Instead all responsibilities are uniformly divided among all machines, known as peers. Peers can serve both as clients and as servers. Examples of this architecture include Bit Torrent and the bitcoin network.

Application

Reasons for using distributed systems and distributed computing may include:

  1. The very nature of an application may require the use of a communication network that connects several computers: for example, data produced in one physical location and required in another location.
  2. There are many cases in which the use of a single computer would be possible in principle, but the use of a distributed system is beneficial for practical reasons. For example, it may be more cost-efficient to obtain the desired level of performance by using a cluster of several low-end computers, in comparison with a single high-end computer. A distributed system can provide more reliability than a non-distributed system, as there is no single point of failure. Moreover, a distributed system may be easier to expand and manage than a monolithic uniprocessor system.

Examples

Examples of distributed systems and applications of distributed computing include the following:

telecommunication networks:
  • telephone networks and cellular networks,
  • computer networks such as the Internet,
  • wireless sensor networks,
  • routing algorithms;

network applications:
  • World Wide Web and peer-to-peer networks,
  • massively multiplayer online games and virtual reality communities,
  • distributed databases and distributed database management systems,
  • network file systems,
  • distributed cache such as burst buffers,
  • distributed information processing systems such as banking systems and airline reservation systems;

real-time process control: 
  • aircraft control systems,
  • industrial control systems;

parallel computation:
  • scientific computing, including cluster computing, grid computing, cloud computing and various volunteer computing projects (see the list of distributed computing projects),
  • distributed rendering in computer graphics.

Comments

Popular posts from this blog

Getting Started with JavaFX