Chapter 2-Architectures
Chapter 2-Architectures
Introduction
DKU-CS COSC4038
2.1 Architectural Styles
the logical organization of distributed systems into
software components
a component is a modular unit with well-defined required
and provided interfaces that is replaceable within its
environment
a connector is a mechanism that mediates
communication, coordination, or cooperation among
components, e.g., facilities for RPC, message passing, or
streaming data
there are various architectural styles
Layered architectures
Object-based architectures
Data-centered architectures
Event-based architectures
DKU-CS COSC4038
Layered architectures
components are organized in a layered fashion where a
component at layer Li is allowed to call components at
the underlying layer Li-1, but not the other way around;
e.g., network layers
DKU-CS C0SC4038
Data-centered architectures
processes communicate through a common repository;
e.g., a shared distributed file system
Event-based architectures
processes communicate through the propagation of events
publish/subscribe systems
processes publish events and the middleware ensures that
only those processes that subscribed to those events will
receive them
DKU-CS COSC4038
2.2 System Architectures
the logical organization of distributed systems into
software components or how are processes organized in a
system
2.2.1 Centralized Architectures
thinking in terms of clients requesting services from
servers
DKU-CS COSC4038
• Application Layering
– no clear distinction between a client and a server; for
instance a server for a distributed database may act as
a client when it forwards requests to different file
servers
– three levels exist
• the user-interface level: implemented by clients and contains
all that is required by a client; usually through GUIs, but not
necessarily
• the processing level: contains the applications
• the data level: contains the programs that maintain the
actual data dealt with
DKU-CS COSC4038
• e.g., the general organization of an Internet search engine into three
different layers
Client-Server Architectures
how to physically distribute a client-server application
across several machines
Multitiered Architectures
Two-tiered architecture: alternative client-server organizations
(a) put only terminal-dependent part of the user interface on the
client machine and let the applications remotely control the
presentation
(b) put the entire user-interface software on the client side
(c) move part of the application to the client, e.g. checking
correctness in filling forms
(d) and (e) are for powerful client machines (more popular)
three tiered architecture: an example of a server acting as a client
an example is the organization of Web sites
DKU-CS COSC4038
2.2.2 Decentralized Architectures
vertical distribution: the ones discussed so far where the
different tiers correspond directly with the logical
organization of applications; place logically different
components on different machines
horizontal distribution: physically split up the client or the
server into logically equivalent parts
an example is a peer-to-peer system where processes
are equal and hence each process acts as a client and a
server at the same time (servent)
read about the different approaches of peer-to-peer
architecture.
DKU-CS COSC4038
another example is the horizontal distribution of a Web
service
DKU-CS COSC4038
THANK YOU
??