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.

Z