Distributed System Architecture
Distributed System Architecture
Distributed systems are often complex pieces of software in which components are
dispersed across multiple machines in a network. In order to understand such
complexity of a distributed system, it is always crucial to organise such components.
The organisation of a distributed system is mostly about the constitutes of the
software components that tells us how various software components are
organised and how they interact.
Distributed systems can be organized in many ways. We can make a distinction be-
tween software architecture and system architecture.
The software architecture considers where the components that constitute a distrib-
uted system are placed across the various machines. System architecture is more
concerned about the logical organization of the software: how do components interact,
it what ways can they be structured, how can they be made independent, and so on.
Adaptability in distributed systems can be achieved by having the system monitor its
own behaviour and taking appropriate corrective measures. This is referred to as
autonomic systems. Which are organised with some form of feedback control loops
which form an important architectural element during system design.
Architectural styles
A key idea when talking about architectures is architectural style. A style reflects the
basic principle that is followed in organizing the interaction between the software com-
ponents comprising a distributed system.
Let’s consider the logical organisation of distributed systems into software components
that is referred to as software architecture. For a successful designing, development
or adopting of a large system, the choice of an architecture to use is crucial.
Architectural styles are formulated based on how components are connected to each
other, how data is exchanged between the components and how these components
are jointly configured to form a system.
Several styles have been identified for distributed systems. This include;
• Layered architectures
• Object-based architectures
• Data-centred architectures
For layer architecture, components are organised into a layered fashion where
components are allowed to call components in layers above them. This approach has
widely been adopted by the networking community.
The layered and object-based architecture forms the most important styles for large
software systems.
Data-centred architecture evolves around the idea of process communication through
a common (active/passive) repository.
There are many different organizations of distributed systems. Let’s look at how dis-
tributed systems are organised by considering where software components are
placed. System architecture is also referred to as software architecture and is con-
cerned with software components in a distributed system, their interaction and place-
ment.
1. Centralised organisation
2. Decentralise organisation
3. Hybrid organisation
Centralised architecture
An important class is where machines are divided into clients and servers. A client
sends a request to a server, who will then produce a result that is returned to the client.
The client-server architecture reflects the traditional way of modularizing software in
which a module calls the functions available in another module. By placing different
components on different machines, we obtain a natural physical distribution of func-
tions across a collection of machines. Client-server architectures are often highly cen-
tralized. In this, a server is a process implanting a specific service e.g. a file system
or database service, a client is a process that requests a service from a server by
sending it a request and subsequently waiting for the server to reply. This client server
interaction is also known as request-reply behaviour.
The figure above is an example of two-tier client-server architecture
Client-servers architectures has had debates and contrivances over years over how
to draw a distinction between the client and the server. For instance, in some cases,
a server for a distribution database can also act as a client. This results to server itself
doing more than just process queries.