System Architectural Styles in Distributed Computing - Cloud Computing

System Architectural Styles

  • System architectural styles cover the physical organization of components and processes over a distributed infrastructure.
  • Two fundamental reference style
    • Client / Server
    • Peer-to-Peer
    • The information and the services of interest can be centralized and accessed through a single access point: the server.
    • Multiple clients are interested in such services and the server must be appropriately designed to efficiently serve requests coming from different clients.

Client / Server architectural Styles

Client / Server architectural Styles
Client / Server architectural Styles
  • Symmetric architectures in which all the components, called peers, play the same role and incorporate both client and server capabilities of the client/server model.
  • More precisely, each peer acts as a server when it processes requests from other peers and as a client when it issues requests to other peers.

Peer-to-Peer architectural Style

Peer-to-Peer architectural Style
Peer-to-Peer architectural Style

Models for Interprocess Communication

  • Distributed systems are composed of a collection of concurrent processes interacting with each other by means of a network connection.
  • IPC is a fundamental aspect of distributed systems design and implementation.
  • IPC is used to either exchange data and information or coordinates the activity of processes.
  • IPC is what ties together the different components of a distributed system, thus making them act as a single system.
  • There are several different models in which processes can interact with each other – these map to different abstractions for IPC.
  • Among the most relevant that we can mention are shared memory, remote procedure call (RPC), and message passing.
  • At a lower level, IPC is realized through the fundamental tools of network programming.
  • Sockets are the most popular IPC primitive for implementing communication channels between distributed processes.

Message-based communication

  • The abstraction of message has played an important role in the evolution of the model and technologies enabling distributed computing.
  • The definition of distributed computing – is the one in which components located at networked computers communicate and coordinate their actions only by passing messages. The term messages, in this case, identify any discrete amount of information that is passed from one entity to another. It encompasses any form of data representation that is limited in size and time, whereas this is an invocation to a remote procedure or a serialized object instance or a generic message.
  • The term message-based communication model can be used to refer to any model for IPC.
  • Several distributed programming paradigms eventually use message-based communication despite the abstractions that are presented to developers for programming the interactions of distributed components.
  • Here are some of the most popular and important:

Message Passing: This paradigm introduces the concept of a message as the main abstraction of the model. The entities exchanging information are explicitly encoded in the form of a message the data to be exchanged. The structure and the content of a message vary according to the model. Examples of this model are the Message-Passing-Interface (MPI) and openMP.
  • Remote Procedure Call (RPC): This paradigm extends the concept of procedure call beyond the boundaries of a single process, thus triggering the execution of code in remote processes.
  • Distributed Objects: This is an implementation of the RPC model for the object-oriented paradigm and contextualizes this feature for the remote invocation of methods exposed by objects. Examples of distributed object infrastructures are Common Object Request Broker Architecture (CORBA), Component Object Model (COM, DCOM, and COM+), Java Remote Method Invocation (RMI), and .NET Remoting.
  • Distributed agents and active Objects: Programming paradigms based on agents and active objects involve by definition the presence of instances, whether they are agents of objects, despite the existence of requests.
  • Web Service: An implementation of the RPC concept over HTTP; thus allowing the interaction of components that are developed with different technologies. A Web service is exposed as a remote object hosted on a Web Server, and method invocations are transformed into HTTP requests, using specific protocols such as Simple Object Access Protocol (SOAP) or Representational State Transfer (REST).