Understanding Distributed Systems: Architecture, Features, and Design
Distributed Systems
A distributed system comprises hardware and software elements that communicate via messages, locally or remotely.
Distributed Applications
A distributed application is a software component available on different computers or architectures, providing user interfaces for system interaction.
Key Features of Distributed Systems
Seven essential features characterize distributed systems:
- Heterogeneity: Diversity in hardware, software, and communication components.
- Extensibility: Ability to be extended in terms of hardware or software.
- Security: Protection of data, encompassing:
- Confidentiality: Protection against unauthorized access.
- Integrity: Protection against alteration or corruption.
- Availability: Protection against access interference.
- Scalability: Ability to handle increased resources or users effectively.
- Fault Tolerance: Techniques to detect, prevent, and manage failures, including:
- Fault detection (e.g., checksums).
- Masking failures (e.g., broadcast).
- Fault tolerance (e.g., user tolerance).
- Failover (e.g., rollback).
- Redundancy.
- Concurrency: Concurrent access to system services.
- Transparency: Hiding internal complexities for easier user access, including:
- Access transparency
- Location transparency
- Concurrency transparency
- Replication transparency
- Failure transparency
- Mobility transparency
- Performance transparency
- Scaling transparency
Architectural Models
Architectural models define element distribution and component relationships.
Software Layers
Software structuring in layers on a single computer or across multiple computers, where layers offer and request services.
The Platform layer offers services to upper layers, varying by computer.
Middleware masks heterogeneity and provides a convenient programming model.
System Architectures
- Client-Server: The server may or may not be the client computer; both can be concurrent.
- Multiple Servers: Services are distributed among multiple servers.
- Proxy Server and Cache: Caches store recently used data objects.
- Peer-to-Peer: Processes perform similar tasks cooperatively, without distinction between clients and servers.
Interfaces and Objects
A Process Interface specifies functions that can be invoked on it.
- Object-oriented languages enable object-oriented distributed processing, with remote method access.
- Examples include CORBA and Java RMI.
Additional Architectural Models
- Mobile Code: Applications using mobile agents.
- Mobile Agent: A program moving across the network to perform tasks.
- Computer Networking: Downloading applications from remote servers.
- Thin Clients: Clients run interface-only; applications run on remote servers.
Design Requirements for Distributed Architecture
Performance
- Responsiveness: Fast response times via few software layers and minimal data transfer.
- Productivity: Work per unit time.
- Load Balancing: Distributing load across multiple servers or computers.
Quality of Service (QoS)
- QoS is the system’s ability to meet specified limits.
- Meeting requirements depends on resource availability at the right times.
Reliability Aspects
- Correctness
- Fault tolerance
- Safety:
- Privacy
- Integrity
- Availability
Fault Tolerance: Applications should function correctly despite hardware, software, or network faults.
- Achieved through redundancy.
- Reliable communication protocols use various techniques.
Safety: Sensitive data and resources should be placed on computers with robust security measures.
Fundamental Models
Interaction Model: Addresses performance and time limits in a distributed system.
Fault Model: Specifies potential failures in processes and communication channels.
Security Model: Identifies potential threats to processes and communication channels.