Elements of Distributed Computing, Components of distributed System

Elements of Distributed Computing 

General concepts and definitions

  • Distributed computing studies the models, architectures, and algorithms used for building and managing distributed systems.
  • As a general definition of the term distributed system, we use the one proposed by Tanenbaum
    • A distributed system is a collection of independent computers that appears to its users as a single coherent system.
  • This definition is general enough to include various types of distributed computing systems that are especially focused on unified usage and aggregation of distributed resources.
  • Communication is another fundamental aspect of distributed computing. Since distributed systems are composed of more than one computer that collaborates together, it is necessary to provide some sort of data and information exchange between them, which generally occurs through the network.
    • A distributed system is one in which components located at networked computers communicate and coordinate their action only by passing messages.
  • As specified in this definition, the components of a distributed system communicate with some sort of message passing. This is a term that encompasses several communication models.

Components of distributed System

  • A distributed system is the result of the interaction of several components that traverse the entire computing stack from hardware to software.
  • It emerges from the collaboration of several elements that- by working together- give users the illusion of a single coherent system.
  • The figure provides an overview of the different layers that are involved in providing the services of a distributed system.

A layered view of a distributed system
Figure 1.10 A layered view of a distributed system. 

Architectural styles for distributed computing

  • At the very bottom layer, computer and network hardware constitute the physical infrastructure; these components are directly managed by the operating system, which provides the basic services for inter process communication (IPC), process scheduling and management, and resource management in terms of file system and local devices.
  • Taken together these two layers become the platform on top of which specialized software is deployed to turn a set of networked computers into a distributed system
  • Although a distributed system comprises the interaction of several layers, the middleware layer is the one that enables distributed computing, because it provides a coherent and uniform runtime environment for applications.
  • There are many different ways to organize the components that, taken together, constitute such an environment.
  • The interactions among these components and their responsibilities give structure to the middleware and characterize its type or, in other words, define its architecture.
  • Architectural styles aid in understanding the classifying the organization of the software systems in general and distributed computing in particular.
  • The use of well-known standards at the operating system level and even more at the hardware and network levels allows easy harnessing of heterogeneous components and their organization into a coherent and uniform system.
  • For example; network connectivity between different devices is controlled by standards, which allows them to interact seamlessly.
  • Design patterns help in creating a common knowledge within the community of software engineers and developers as to how to structure the relevant of components within an application and understand the internal organization of software applications.
  • Architectural styles do the same for the overall architecture of software systems.
  • The architectural styles are classified into two major classes
    • Software Architectural styles: Relates to the logical organization of the software.
    • System Architectural styles: styles that describe the physical organization of distributed software systems in terms of their major components.