Einführung und Architekturen [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:
- Zugriffstransparenz
- Positionstransparenz (Ortstransparenz)
- Nebenläufigkeitstransparenz (Concurrency Transparency)
- Replikationstransparenz (Replication Transparency)
- Fehlertransparenz (Failure Transparency)
- Mobilitätstransparenz
- Leistungstransparenz
- 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:
- Größe
- Geografische Skalierbarkeit
- 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:
- Netzwerk ist zuverlässig
- Latenz ist null
- Bandbreite ist unbegrenzt
- Netzwerk ist homogen
- Topologie bleibt konstant
- Es gibt nur einen Administrator
- Transportkosten sind vernachlässigbar
- 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]
- Client-Prozesse
- Ansätze: Separate Gegenstellen, Thin Clients
- Beispiel: X Window System
Server-Prozesse [13f]
- Server-Prozesse
- Generisches Servermodell
- Serverdienste
- Stateless vs. Stateful
- Objektserver (z.B. Apache)
Code Migration [14]
- Code Migration
- Definition, Ziel, Pfade
- Moderne Ansätze
- Sicherheit
Interprozesskommunikation (IPC) [15]
- 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:
- Firewalls
- Schlüsselmanagement