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