Prof. Dr. Oliver Haase
Verteilte Systeme
Einführung
1
Definition
“A distributed system is a collection of independent
computers that appears to its users as a single coherent system.” - Andrew Tanenbaum
“A distributed system is a collection of independent
computers that are used jointly to perform a single task or to provide a single service.” - Kuz, Chakravarty, Heiser
Zu ambitioniert, heutiges Verständnis eher wie folgt:
Definition
3
Im Gegensatz zu einer zentralen Anwendung, die von einem oder mehreren Prozessen auf genau einem Rechner aus-
geführt wird, besteht eine verteilte Anwendung aus mehreren Prozessen, die – zumindest zum Teil – auf verschiedenen, mit-
einander vernetzten Rechnern laufen.
Prozess 1
Prozess 2
Rechner A
Prozess 3
Rechner B
Interaktion
Um ihre gemeinsame Aufgabe zu erfüllen, müssen diese
Prozesse miteinander interagieren, um Daten auszutauschen.
Es gibt 2 Interaktionsmuster:
1. Kooperation
2. Kommunikation
gemeinsame Daten Befehle
Prozess 1
Befehle Prozess 2
Daten
Befehle Daten
Befehle Daten
Prozess 1 Prozess 2
Interaktion
‣
Kooperation symetrisch‣
Kommunikation asymmetrisch: 1 Sender, n Empfänger‣
Kooperation hauptsächlich verwendet für lokale Prozesse (shared memory)‣
es gibt aber auch verteilte Kooperation (Linda, JavaSpaces)‣
verteilte Kooperation intern durch Kommunikation realisiert5
Typische Arten Verteilter Systeme
‣
Webapplikationen‣
Gridcomputing‣
Cloudcomputing‣
Peer-To-Peer-SystemeDie meisten modernen Anwendungen sind verteilt, zentrale Desktop-Applikationen sind vergleichsweise die Ausnahme.
Warum verteilen?
‣
verteilte Aufgabe: Videokonferenzsystem, Internet-Telefonie, Fahrzeugleitsystem, ...‣
Robustheit, Zuverlässigkeit, Verfügbarkeit: redundante Datenkopien, Stand-by-Rechner‣
Teile müssen auf bestimmten Rechern laufen: spezielle Hardware, Zugriff auf entfernte Daten, Preispolitik‣
Wirtschaftlichkeit: mehrere schwächere Rechner billiger als ein stärkerer7
Warum verteilen?
‣
Nutzung brachliegender Ressourcen: Grid-Computing, seti@home (730 TFLOPS), <others>@home, BOINC- Plattform (6,3 PFLOPS)‣
Lastverteilung‣
verringerte Antwortzeiten bei Aufteilung einer Aufgabe in parallele TeilaufgabenManche Anwendungen müssen, andere können verteilt sein.
Aber...
‣
Kommunikationskosten: €, Latenz (latency), Schwankungen (Jitter)‣
erhöhte Komplexität in allen Phasen des Software- Lebenszyklus’ (und damit noch mehr €)9
...verteilte Systeme haben zusätzliche Kosten, nämlich...
erhöhte Komplexität
‣
Entwurf:•
Verteilungsmodell•
Kommunikationsmechanismus, -protokolle-
abhängig von Kanälen-
können a priori unbekannt sein oder dynamisch variieren-
ideal: adaptives Systemerhöhte Komplexität
‣
Implementierung•
neue Fehlerquellen-
Ausbleiben einer Antwort → Timer & Fehlerbehandlung-
unerwartete Antwort → mögliche Fehlerquelle: zu kurze Timer-
Fehlerbehandlung hängt vom Zusammenspiel derKomponenten ab → z.B. Sender informieren & verteiltes Error Recovery anstoßen oder ignorieren
•
Nebenläufigkeit: Warten auf Nachricht (Antwort) in separatem Thread um Parallelitätsgrad zu erhöhen → erfordert Thread-Synchronisation11
erhöhte Komplexität
‣
Testen•
Unit Tests: Simulation entfernter Komponenten inkl.fehlerhaftem Verhalten sehr aufwändig
•
Integrationstests-
Setup bei geographisch weit verteiltem System aufwändig-
verteiltes Logging und Systembeobachtung schwierig•
kombinatorische Explosion möglicher verteilter Konfigurationen und Plattformen → nur wichtigste Kombinationen können getestet werdenerhöhte Komplexität
‣
Debugging•
Fehlerreproduktion bei geographisch weit verteiltem System aufwändig•
Anhalten an Breakpoints unmöglich, wenn entfernte Komponenten auf Antwort warten (Time-Outs!)•
Erfordert Änderung der entfernten Komponenten zum Zweck des Debuggings → kann Reproduzierbarkeitverhindern (Heisenbug)
13
erhöhte Komplexität
‣
Betrieb•
Ausfall eines zentralen Rechners oder von Teilen desKommunikationsnetzes kann zu Störung oder Stillstand des ganzen Systems führen
•
viele Angriffspunkte, Komponenten prinzipiell von außen erreichbar, Kommunikationswege angreifbarerhöhte Komplexität
‣
Versionierung und Konfiguration•
i.a. unterschiedliche Versionierungszyklen für einzelne Komponenten → System muss in unterschiedlichen Konfigurationen laufen•
erfordert Vorwärts- und Rückwärtskompatibilitäten (Server 3.0 kann Anfragen von Client 2.1 bearbeiten und mussunbekannte Anfragen von Client 4.0 ignorieren)
•
Setzt Austausch von Versionsnummern in Kommunikationsprotokollen voraus15
Entwurfsziele
‣
Verteilungstransparenz‣
SkalierbarkeitEntwurf eines verteilten Systems wird geleitet durch zwei Hauptziele:
Verteilungstransparenz
17
‣
Bedeutung: Verteiltes System aussehen lassen wie lokales‣
Transparenz: System ist transparent bzgl. Eigenschaft, wenn diese für den Benutzer unsichtbar (transparent) ist‣
vollständige Verteilungstransparenz schwer erreichbar, aber:‣
keine binäre Eigenschaft, sondern verschiedene TransparenzaspekteVerteilungstransparenz
Transparenz Bedeutung
Zugriffs- versteckt Unterschiede im Zugriff auf Daten Orts- verbirgt, wo sich eine Ressource befindet
Migrations- verbirgt, dass Ressource an anderen Ort verschoben werden kann Relokations- verbirgt, dass Ressource während der Benutzung an anderen Ort
verschoben werden kann
Replikations- verbirgt, dass mehrere Replika einer Ressource existieren
Persistenz- verbirgt Unterschiede zwischen persistenten und transienten
Skalierbarkeit
‣
Neben der Verteilungstransparenz zweites wichtiges Entwurfsziel eines verteilten Systems.‣
Internet und World Wide Web: nicht denkbar ohne dezentrale, skalierbare Struktur ohne globaleKontrollinstanzen.
19
Skalierbarkeit ist die Fähigkeit eines Systems, zu wachsen ohne wesentliche Anpassungen der verwendeten Algorithmen und
Protokolle.
Skalierbarkeit
Skalierbarkeit betrifft drei verschiedene Dimensionen:
‣
Größe: Einfaches Hinzufügen neuer Komponenten‣
geographischen Verteilung: System funktioniert, egal obverteilt innerhalb einer Insitution, einer Stadt, eines Landes, eines Kontinentes oder über den Globus
‣
administrativen Verteilung: System funktioniert auch bei Verteilung über administrative Domänen hinweg.Für jede Dimension gibt es Hindernisse, die die Skalierbarkeit erschweren, sowie Techniken und Strategien, diese zu
Skalierbarkeit
21
Dimension Hindernis Vermeidungsstrategie zentral Dienste
Replikation / Verteilung Größe zentrale Daten Replikation / Verteilung zentrale Algorithmen dezentrale Algorithmen geographische
Verteilung Latenzzeiten ‣ Kommunikationreduktion durch
Vorverarbeitung, preemptive Fetches
‣ asynchrone Kommunikation
administrative
Verteilung Sicherheitsrichtlinien Traversierungstechniken für restriktive Richtlinien verwenden