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.
