2 Architecture
2 Architecture
2 Architecture
Chapter 2 Architectures
1
Architecture
• Software architecture
–How software components are organized,
–How software components interact
• System architecture
–Instantiation and placement of software components
on real machines
• Centralized architecture, client-server system
• Hybrid architecture 2
Software Architecture
• Layered architecture
– widely adopted by the networking community
• Object-based architecture
– E.g., client-server style (ftp)
• Data-centered architecture
– Communicate through a common repository
• Event-based architecture
– Communicate through the propagation of events,
e.g., publish/subscribe systems 3
Layered Architecture
4
Object-Based Architecture
5
Event-Based Architecture
• Decoupled in space (referentially decoupled)
– Processes are loosely coupled, need not explicitly refer to each other
6
Shared Data-Space Architecture
• Not only decoupled in space but also decoupled in time
– Processes need not both be active when communication takes place
7
System Architecture
• Centralized architectures
– Application layering (logical software layering)
– Multi-tiered architectures (system architecture)
• Decentralized architectures
– Structured P2P (peer-to-peer) architectures
– Unstructured P2P architectures
– Topology management of overlay networks
– Superpeers
• Hybrid architectures
– Edge-server systems
– Collaborative distributed systems
8
Centralized Architecture
• Connection-oriented protocols
– Often used for non-idempotent operations
• E.g., buying stock
11
Two-tiered Architectures
• The simplest way to place a client-server application is
– A client machine that only implements (part of) the user-interface level
– A server machine implementing the rest, i.e, the processing and data levels – This
is so called the two-tiered architecture
Thin Fat
Client Client
12
Three-Tiered Architecture
• The server tier in two-tiered architecture becomes more and more
distributed
– A single server is no longer adequate for modern information systems
13
Decentralized Architecture
• Multi-tiered architectures can be considered as vertical
distribution
– Placing logically different components on different machines
17
Content Addressable Network (2)
•To add a new region, split
the region
•To remove an existing
region, neighbor will take
over
18
Unstructured P2P Architectures
• Largely relying on randomized algorithm to construct the
overlay network
– Each node has a list of neighbors, which is more or less constructed in
a random way
• Question:
– How to constructing a specific topology from a unstructured P2P
systems
25
Example of Two-Layer Approach
Converg
e toward more accuracy
31
Collaborative Distributed Systems
• A hybrid distributed model that is based on mutual
collaboration of various systems
– Client-server scheme is deployed at the beginning
– Fully decentralized scheme is used for collaboration after joining
the system
• Components
– A component that can redirect client requests to other servers.
– A component for analyzing access patterns.
– A component for managing the replication of Web pages.
34
Benefits of Globule
• Example:
– Alice has a web server; Bob has a web server
– Alice’s server can have replicated contents of the Bob’s server
and vice versa
• Computational reflection
– Ability to inspect itself, and if necessary, adapt its behavior
– Reflective middleware has yet to proof itself as a powerful tool to
manage the complexity of distribute systems
42
Replication Strategy in Globule
• When enough requests for a page is collected,
– Globule does a “what-if analysis” to evaluate the replication policies
and select the best policy
43
Replication Strategy in Globule
• How many requests (i.e., trace length) are needed for evaluation?
44
Automatic Component Repair in Jade
• Jade: A Java implementation framework that allows components
to be added and removed at runtime
• Steps in a simple auto-repair example
– Terminate every binding between a component on a non-faulty node, and
a component on the node that just failed.
– Request the node manager to start and add a new node to the domain.
– Configure the new node with exactly the same components as those on
the crashed node.
– Re-establish all the bindings (between client & server interfaces) that
were previously terminated.