3. /26
3
Architectural Styles
Architectural style is formulated in terms of components.
A component is a modular unit with well-defined required and provided interfaces that is replaceable
within its environment.
The way that components are connected to each other, the data exchanged between components, and
finally how these elements are jointly configured into a system.
In a distributed system a connector is generally described as a mechanism that mediates communication,
coordination, or cooperation among components
Based on the components and connectors, the architectural styles of a distributed system can be classified
as
Layered architectures
Object-based architectures
Data-centered architectures
Event-based architectures
4. /26
4
Layered Architectures
Components are organized in a layered fashion.
A component at layer LN is allowed to call
components at the underlying layer LN −1, but not the
other way around.
A key observation is that control generally flows
from layer to layer.
Requests go down the hierarchy
In contrast, the results flow upward.
5. /26
5
Object-based Architectures
Objected-based architectural styles is based on an
arrangement of loosely coupled objects, it is less structured.
Each object corresponds to what we define as a component.
These components are connected through a (remote)
procedure call mechanism.
In this case of distributed systems, the calling object does not
need to be executed on the same machine as the called object.
Object-based architectures are attractive because they provide
a natural way to encapsulate data (called the “state” of the
object) and the operations that can be performed on that data
(which are called “methods” or behavior of the object) in a
single entity.
6. /26
6
Data-centered Architectures
In data-centered architecture, the data is centralized and accessed frequently by other components, which
modify data.
The main purpose of this style is to achieve integrality of data.
Data-centered architecture consists of different components that communicate through shared data
repositories.
The components access a shared data structure and are
relatively independent, in that, they interact only through
the data store.
The most well-known examples of the data-centered
architecture is a database architecture, in which the
common database schema is created with data definition
protocol.
7. /26
7
Event-based Architectures
In event-based architectures, processes essentially communicate through the propagation of events and
optionally also carry data.
For distributed systems, event propagation has generally been associated with publish/subscribe
systems.
The basic idea is that processes publish events after which the middleware ensures that only those
processes that subscribed to those events will receive them.
The main advantage of event-based systems is that processes are loosely coupled. In principle, they need
not explicitly refer to each other.
Event-based architectures can
be combined with data-
centered architectures,
yielding as shared data
spaces.
9. /26
9
Centralized Architectures: Client – Server
Client – Server model processes in a distributed system are divided into two (possibly overlapping) groups.
A server is a process implementing a specific service, for example, a file system service or a 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’s
reply.
When a client requests a service, it simply packages a message
for the server, identifying the service it wants, along with the
necessary input data. The message is then sent to the server.
The latter, in turn, will always wait for an incoming request,
subsequently process it, and package the results in a reply
message that is then sent to the client.
Have multiple clients that decide when and how to use the
shared resource and display it, change data, and send it back to
the server.
10. /26
10
Three-tier architecture organizes applications into three logical and physical computing tiers: the
presentation tier, or user interface; the application tier, where data is processed; and the data tier, where
the data associated with the application is stored and managed.
Centralized Architectures: Three – tier
Presentation tier is the user interface and communication layer of
the application, where the end user interacts with the application. Its
main purpose is to display information to and collect information
from the user.
Application tier (logic tier or middle tier) is the heart of the
application. Information collected in the presentation tier is
processed and decision making is conducted in middle tier. It act
like an agent that receives requests from clients, processes the data
and then forwards it on to the servers.
Data tier (or database tier) the information processed by the
application is stored and managed.
In a three-tier application, all communication goes through the
application tier. The presentation tier and the data tier cannot
communicate directly with one another.
11. /26
11
Centralized Architectures: Multi – Tier
Multi – Tier architecture is used to divide an enterprise application into two or more components that may
be separately developed and executed.
Multi-tier application includes: presentation tier, application processing tier, data access tier, and data tier.
Presentation tier: Provides basic user interface and application access services
Application processing tier: Possesses the core business or application logic
Data access tier: Provides the mechanism used to access and process data
Data tier: Holds and manages data that is at rest
This division allows each component/tier to be separately developed, tested,
executed and reused.
Enterprise application has both external and internal users which use a web-
based application which communicates back to a common set of application
servers. Finally, the application servers communicate with a database server.
12. /26
12
In Peer-to-Peer (P2P) architectures, computing or networking is a distributed application architecture
that partitions tasks or workloads between peers.
Peers are equally privileged, equipotent participants in the application and said to form a peer-to-peer
network of nodes.
This means that the functions that need to be carried out are represented by every process that
constitutes the distributed system.
De-centralized Architectures: Peer-to-Peer (P2P)
Peers make a portion of their resources (such as processing power, disk
storage or network bandwidth) directly available to other network
participants, without the need for central coordination by servers or
stable hosts.
Peers are both suppliers and consumers of resources, in contrast to the
traditional client–server model in which the consumption and supply of
resources is divided.
Peer
13. /26
13
De-centralized Architectures: Unstructured peer-to-peer
Unstructured peer-to-peer networks do not impose a particular structure on the overlay network by
design, but rather are formed by nodes that randomly and freely connects with each other, e.g., it selects
arbitrary peers as neighbors.
It neither has a centralized directory nor has any control over the network topology or resource placement.
It largely relies on randomized algorithms for constructing an overlay network. Like as randomized
neighboring nodes the data items are assumed to be randomly placed on these nodes.
Live
node
Each node maintains a list of c neighbors (also known partial view).
Nodes regularly exchange entries from their partial view.
Each entry identifies another node in the network, and has an
associated age that indicates how old the reference to that node is.
The active thread takes the initiative to communicate with another
node and selects the nodes from its current partial view.
Assuming that entries need to be pushed to the selected peer, it
continues by constructing a buffer containing c/2+1 entries, including
an entry identifying itself. The other entries are taken from the current
partial view.
14. /26
14
De-centralized Architectures: Unstructured peer-to-peer
If the node is also in pull mode it will wait for a response from the selected peer. That peer, in the
meantime, will also have constructed a buffer by means the passive thread whose activities strongly
resemble that of the active thread.
Benefits:
Because of no structure globally imposed upon them, unstructured networks are easy to build and
allow for localized optimizations to different regions of the overlay.
Also, because of same role of all peers in network, unstructured networks are highly robust.
Live
node
Limitations:
The primary limitations of unstructured networks also arise from this
lack of structure. When a peer wants to find a desired piece of data in
the network, the search query must be flooded through the network
to find as many peers as possible that share the data.
Flooding causes a very high amount of signaling traffic in the
network, uses more CPU/memory and does not ensure that search
queries will always be resolved. Furthermore, since there is no
correlation between a peers and the content managed by it, there is
no guarantee that flooding will find a peer that has the desired data.
15. /26
15
In Structured Peer-to-Peer architectures, the overlay is organized into a specific topology, and the
protocol ensures that any node can efficiently search the network for a file/resource, even if the
resource is extremely rare.
The overlay network is constructed using a deterministic procedure, namely distributed hash table
(DHT).
In DHT, a variant of consistent hashing is used to assign ownership of each file to a particular peer
and enables peers to search for resources on the network using a hash table: that is, (key, value) pairs
are stored in the DHT.
De-centralized Architectures: Structured Peer-to-Peer
In order to route traffic efficiently through the network, nodes in a
structured overlay must maintain lists of neighbors that satisfy
specific criteria. This makes them less robust in networks with a
high rate of churn (i.e. with large numbers of nodes frequently
joining and leaving the network)
When looking up a data item, the network address of the node
responsible for that data item is returned. This is accomplished by
routing a request for a data item to the responsible node.
16. /26
16
Hybrid Architectures (1)
Many distributed systems combine architectural features (example: client-server solutions are combined with
decentralized architectures), such combine architectural featuring systems are known as Hybrid architectures.
Edge-Server Systems: are deployed on the Internet where servers are placed ‘‘at the edge’’ of the network.
This edge is formed by the boundary between enterprise networks and the actual Internet (example.
Internet service provider (ISP)).
End users at home connect to the Internet through their ISP.
End users, or clients in general, connect to the Internet by means of an edge server.
The edge server’s main purpose is to serve content,
possibly after applying filtering and transcoding.
More interesting fact is that a collection of edge servers
can be used to optimize content and application
distribution.
For a specific organization, one edge server acts as an
origin server from which all content originates. That
server can use other edge servers for replicating Web
pages.
17. /26
17
Hybrid Architectures (2)
Collaborative Distributed Systems is used to deploy the Hybrid structures. Main issue of Hybrid systems is
to get started first which often use centralized client-server scheme. Once a node (client-server) has joined the
system, it uses a fully decentralized scheme for collaboration. Example: BitTorrent file-sharing.
BitTorrent is a peer-to-peer file downloading system where an end user downloads chunks of the desired file
from other users until the downloaded chunks can be assembled together yielding the complete file.
In most file-sharing systems, a file can be downloaded only when the downloading client is providing
content to someone else.
To download a file, a user needs to access a global directory (i.e., Web sites) where such a directory contains
references (.torrent files).
A .torrent file contains the information that is needed to download a specific file. Particularly, it refers to a
tracker which is a server that keeps an accurate account of active nodes that have chunks of the requested file.
An active node is one that is currently downloading
another file. Once the nodes have been identified from
where chunks can be downloaded, the downloading node
effectively becomes active and forces other nodes to help.
If node P notices Q is downloading more than uploading,
then P can decrease the rate at which P sends data to Q.
19. /26
19
Middleware System
What Does Middleware Mean?
Middleware is a software layer situated between applications and operating systems.
Middleware is typically used in distributed systems where it simplifies software development by doing
the following:
Hides the intricacies of distributed applications
Hides the heterogeneity of hardware, operating systems and protocols
Provides uniform and high-level interfaces used to make interoperable, reusable and portable
applications
Provides a set of common services that minimizes duplication of efforts and enhances collaboration
between applications
20. /26
20
Kinds Middleware System (1)
New application development
Middleware can support modern and popular runtimes for a variety of use cases.
Developers and architects can work with agility across platforms, following sets of foundational runtimes,
frameworks, and programming languages.
Middleware can also deliver commonly used functions such as web servers, single sign-on (SSO),
messaging, and in-memory caching.
Optimization of existing applications
Middleware can help developers transform legacy monolithic applications into
cloud-native applications, keeping valuable tools active with better performance
and more portability.
Legacy applications are implemented as monoliths, in which all data storage and
processing are controlled by the monolith, and all functions for all data objects are
processed using the same backend codebase.
Monolith
21. /26
21
Kinds Middleware System (2)
Comprehensive integration
Middleware integration tools connect critical internal and external systems. Integration capabilities like
transformation, connectivity, composability, and enterprise messaging, combined with SSO
authentication, make it easier for developers to extend capabilities across different applications.
Application Programming Interfaces (APIs)
Many middleware services are accessed through APIs, which are sets of tools, definitions, and protocols
that allow applications to communicate with each other.
APIs make it possible to connect completely different products and services through a common layer.
22. /26
22
Kinds Middleware System (3)
Data streaming
While APIs are one way to share data between applications, another approach is
asynchronous data streaming.
This replicates a data set in an intermediate store, where the data can be shared
among multiple applications.
One popular open source middleware tool for real-time data streaming
is Apache Kafka.
Intelligent business automation
Middleware can help developers, architects, IT, and business leaders automate manual decisions.
Automation can improve resource management and overall efficiency.
24. /26
24
The Feedback Control Model
The most important feature of self-managing systems is the adaptations which take place by means of one
or more feedback control loops.
The core of a feedback control system is formed by the components that need to be managed.
These components are assumed to be driven through controllable input parameters, but their behavior
may be influenced by all kinds of uncontrollable input, also known as disturbance or noise input.
Although disturbance will often come from
the environment in which a distributed
system is executing, it may well be the case
that unanticipated component interaction
causes unexpected behavior.
There are essentially three elements that form
the feedback control loop:
Metric Estimation Component
Feedback Analysis Component
Adjustment Component
25. /26
25
The Feedback Control Model
Metric Estimation Component: Measures the various aspects (such as round-trip delays, latency between
nodes, effect of noise, placing replicas, changing scheduling priorities, switching services, and so on) of
the distributed system and sends those measured metrics to the analyzer.
Feedback Analysis Component: It analyzes the measurements and compares these to reference values. It
forms the heart of the control loop as it contain the algorithms that decide on possible adaptations.
Adjustment Component: consist of various
mechanisms to directly influence the behavior of
the system. There can be many different
mechanisms: placing replicas, changing scheduling
priorities, switching services, moving data for
reasons of availability, redirecting requests to
different servers, etc. The analysis component will
need to be aware of these mechanisms and their
expected effect on system behavior. Therefore, it
will trigger one or several mechanisms, to
subsequently later observe the effect.
26. /26
26
Home Work
Study Examples:
2.4.2 Example: Systems Monitoring with Astrolabe
2.4.3 Example: Differentiating Replication Strategies in
Globule
2.4.4 Example: Automatic Component Repair Management in
Jade