Architectures of Distributed Systems

Architectural Styles

Layered Architectures

Object-based Architectures

Data-centered Architectures

Event-based Architectures

Used for client-server system

Used for distributed object system

Publish/subscribe system

DS is organized by considering where software components are placed. Deciding on software components, their interaction & their placement leads to an instance of a software architecture, called system architecture

Centralized Architectures

Decentralized Architecture

Request-reply behaviour (client request, then server wait for request)
Connectionless protocol

Layers of Architectural style

The user-interface level (display management)

The processing level (applications)

The data level (actual data being acted on)

Horizontal distribution = client & server acting the same (P2P)

Distributed Hash Table (DHT) = provides a lookup service
Content Addressable Network (CAN) = partitioned among all the nodes

Hybrid Architecture

Client server solution combine with decentralized architecture

Edge-Server system = server at the edge of network

BitTorrent = P2P downloading system (combine centralized with decentralized solutions)

Architecture vs Middleware

Interceptor = software construct that break the usual flow of control and allow other (application specific) code to be executed

Example: Object A can call a method that belongs to Object B, while the latter resides on a different machine than A

General approach to adaptive software

Separation of concerns

Computational reflection

Component-based design