Einführung und Architekturen [1]

  1. Einführung und Definitionen
    • Historische Einordnung & Wandel
    • Vernetzung
    • Charakteristika heutiger Verteilter Systeme
    • Definitionen Verteilter Systeme
    • Einheitliche Erscheinung
    • Verteilungsintransparenz (“distribution transparency”)
    • Single-System-View
    • Kohärenz
    • Beispiele für Verteilte Systeme:
      • E-Learning-Plattformen
      • Fahrzeugkommunikation und autonomes Fahren
      • Folding@Home-Projekt
      • ERP-Systeme
      • IoT-Anwendungen (Internet of Things)

2. Middleware [1-3]

  • Definition
  • Dienste der Middleware
    • Kommunikationsdienste: Remote Procedure Calls (RPC)
    • Sicherheitsdienste: Authentifizierung, Autorisierung, Verschlüsselung
    • Abrechnungsdienste: Erfassung der Ressourcennutzung
    • Unterstützung bei Ausfällen und Wiederherstellung
  • Unterschied zu Betriebssystemdiensten
  • Typische Dienste im Detail
    • Kommunikation mittels Remote Procedure Call (RPC)
    • Transaktionen
    • Dienstkomposition
    • Mashups
    • Zuverlässigkeit
  • Aufbau von Middleware
  • Designziele für Middleware-Systeme
    • Interoperabilität
    • Erweiterbarkeit
    • Anpassungsfähigkeit (Adaptivity)
    • Modularität
  • Wrapper (Adapter)
    • Problemstellung
    • Lösung
    • Beispiel: Amazon S3 (Simple Storage Service)
  • Interceptors
    • Konzept
    • Kontrollfluss
    • Middleware-Unterstützung
  • Vorteile von Interceptors
  • Nachteile von Interceptors
  • Flexibilität und Anpassungsfähigkeit im Detail
    • Dynamische Änderungen
    • Adaptive Software
    • Komponentenbasierte Middleware
    • Herausforderungen bei Komponentenbasierter Middleware
    • Grundlegende Anforderungen für Dynamische Anpassung
    • Gewohnte Verteilte Systeme

3. Designziele Verteilter Systeme [3]

Gemeinsame Ressourcennutzung (Resource Sharing)

  • Ziel
  • Gründe für die gemeinsame Nutzung
  • Wirtschaftlichkeit
  • Zusammenarbeit
  • Informationsaustausch
  • Interne Vernetzung und Kollaboration
  • Beispiele:
    • Peer-to-Peer (P2P)-Filesharing-Netzwerke (z.B. BitTorrent)
    • Weltweite Web-Suche

Transparenz (Distribution Transparency) [3]

  • Ziel
  • Das System soll so konzipiert sein…
  • Das System soll als eine einzige…
  • Acht Formen der Transparenz:
    1. Zugriffstransparenz
    2. Positionstransparenz (Ortstransparenz)
    3. Nebenläufigkeitstransparenz (Concurrency Transparency)
    4. Replikationstransparenz (Replication Transparency)
    5. Fehlertransparenz (Failure Transparency)
    6. Mobilitätstransparenz
    7. Leistungstransparenz
    8. Skalierungstransparenz (Scalability Transparency)

Offenheit (Openness) [4]

  • Ziel: Offene verteilte Systeme sollten standardisiert und zugänglich sein
  • Aspekte der Offenheit:
    • Syntax und Semantik der Kommunikation einhalten
    • Nutzung von IDL
    • Eigenschaften offener Systeme:
      • Einfache Konfiguration
      • Erweiterbarkeit
      • Interoperabilität

Skalierbarkeit (Scalability)

  • Notwendigkeit
  • Prognose IoT-Geräte
  • Sicherstellen der Skalierbarkeit
  • Dimensionen:
    1. Größe
    2. Geografische Skalierbarkeit
    3. Administrative Skalierbarkeit
  • Typen:
    • Vertikale Skalierung (Scaling Up)
    • Horizontale Skalierung (Scaling Out)

4. Typische Fehler (Fallacies of Distributed Computing)

  • Komplexität und Fehleranfälligkeit
  • Neun Fehlannahmen:
    1. Netzwerk ist zuverlässig
    2. Latenz ist null
    3. Bandbreite ist unbegrenzt
    4. Netzwerk ist homogen
    5. Topologie bleibt konstant
    6. Es gibt nur einen Administrator
    7. Transportkosten sind vernachlässigbar
    8. Netzwerk ist sicher

5. Typen Verteilter Systeme [4-6]

  • Verteilte Rechensysteme
    • Cluster-Computing
    • Grid-Computing
    • Cloud Computing
  • Verteilte Informationssysteme
  • Verteilte Pervasive Systeme (Ubiquitous Computing, IoT)

6. Architekturen (Softwareorganisation und -struktur) [6]

  • 6.1. Schichtenarchitektur
  • 6.3. Objektbasierte und SOA [7]
  • Komponentenorientierte Architektur
  • 6.4. Ressourcenbasierte Architekturen (z.B. REST) [8]
  • 6.5. Publish-Subscribe Architekturen [9]

7. Systemarchitekturen (Physische Platzierung) [10]

  • Zentralisierte Organisation (Client-Server)
  • Mehrschicht-Architektur (z.B. 3-Tier)
  • Dezentrale Systeme: P2P
  • Hybride Architekturen [11]
    • Edge Computing
    • Fog Computing
    • Cloud Computing

Prozesse und IPC [12]

Prozesse und Threads [12]

  • Prozesse
  • Threads
  • Multithreaded Clients/Server
  • Konkurrenztransparenz

Virtualisierung [13]

  • Prinzipien und Schnittstellen
  • Arten:
    • Interpretation
    • Volle Virtualisierung
    • Container-Virtualisierung (z.B. Docker)
    • Virtuelle Maschinen (IaaS)

Client-Prozesse [13]

  1. Client-Prozesse
    • Ansätze: Separate Gegenstellen, Thin Clients
    • Beispiel: X Window System

Server-Prozesse [13f]

  1. Server-Prozesse
    • Generisches Servermodell
    • Serverdienste
    • Stateless vs. Stateful
    • Objektserver (z.B. Apache)

Code Migration [14]

  1. Code Migration
    • Definition, Ziel, Pfade
    • Moderne Ansätze
    • Sicherheit

Interprozesskommunikation (IPC) [15]

  1. Interprozesskommunikation
    • Grundlagen, OSI-Modell
    • Kommunikationsarten (synchron/asynchron, persistent)
    • Remote Procedure Call (RPC)
    • Nachrichtenorientierte Kommunikation: flexiblere Alternativen [16]
    • Persistente Kommunikation (MOM) [17]
    • Multicast Kummunkation [17f]
      • Broadcast & Multicast
      • Overlay-Netzwerke
      • Tree-Based Multicasting

Namensräume [18f]

  • Grundlagen
  • Namen, Identifikatoren, Adressen
  • Arten:
    • Flache
    • Hierarchische
    • Strukturierte
  • Linking und Mounting
  • Attributbasierte Namensgebung (LDAP)

Security in Verteilten Systemen [20f]

  • Sicherheitsaspekte:
    • Verschlüsselung
    • Authentifizierung
    • Autorisierung
    • Integrität
    • Auditing
  • Kryptographie
  • Sichere Kanäle
  • Digitale Signaturen
  • Zugriffskontrolle:
    • ACLs, Capabilities, RBAC
  • Firewalls
  • Schlüsselmanagement