What is a distributed system?

<aside> <img src="/icons/exclamation-mark_red.svg" alt="/icons/exclamation-mark_red.svg" width="40px" /> A distributed system is a collection of autonomous computing elements

that appears to its users as a single coherent system.

</aside>

In other words, distributed system is a collection of computing elements (nodes) each being able to behave independently of each other and appears as a single service for the end user.

Distributed systems are often organized with overlay networks. Overlay networks can be divided into two categories.

  1. Structured overlay. Each node has a well-defined (deterministic) set of nodes that it can communicate with.
  2. Unstructured overlay. In this network each node references to a randomly chosen node.

Middleware

To assist the development of application for distributed systems, a concept of middleware was introduced. A middleware is a software layer that provides the same interface for each node despite an operating system running at it.

Untitled

Middleware offers following services for applications running on the top of it:

The examples of middleware services are:

  1. Communication. A common communication service is the so-called Remote Procedure Call (RPC) that allows to invoke a function that is implemented and executed on a different host.
  2. Transactions. Middleware provides a way to use multiple services in a all-or-nothing way, making it more error-prone and reliable.
  3. Reliability. Provides a way to hide and recover from any node’s failure.

Design Goals

The major goal of any distributed system today is transparency. Transparency might be achieved in different fields: