Verteilte Systeme - Cheatsheet
Definition und Eigenschaften verteilter Systeme
Definition:
Verteilte Systeme bestehen aus mehreren unabhängigen Computern, die miteinander kommunizieren und kooperieren, um eine gemeinsame Aufgabe zu erfüllen.
Details:
- Skalierbarkeit: Fähigkeit, durch Hinzufügen neuer Knoten zu wachsen.
- Transparenz: Verbergen der Komplexität vor den Benutzern.
- Zuverlässigkeit: Weiterlesen auch bei Ausfall einzelner Komponenten.
- Heterogenität: Zusammenarbeit unterschiedlicher Hardware und Software.
- Parallelität: Gleichzeitiges Ausführen von Prozessen auf verschiedenen Knoten.
- Verteilte Kontrolle: Keine zentrale Steuerung, jede Komponente agiert autonom.
Protokolle der Transportschicht (z.B. TCP, UDP)
Definition:
Transportschicht-Protokolle wie TCP und UDP sind für den zuverlässigen oder schnellen Datentransfer zwischen Hosts zuständig.
Details:
- TCP (Transmission Control Protocol): zuverlässige, verbindungsorientierte Datenübertragung, garantiert Reihenfolge und Integrität (z.B. HTTP, FTP).
- UDP (User Datagram Protocol): unzuverlässige, verbindungslose Datenübertragung, schneller, aber keine Garantie für Reihenfolge und Integrität (z.B. VoIP, DNS).
- TCP: Flow-Control, Fehlerkorrektur durch Segmentierung, Sequenznummern, ACKs.
- UDP: Leichtgewichtiger, keine Verbindungsaufbau- bzw. Abbauprozedur.
- Wichtig: Wahl des Protokolls hängt von Anwendungsanforderungen ab (Zuverlässigkeit vs. Geschwindigkeit).
Strenge Konsistenz vs. eventual consistency
Definition:
In verteilten Systemen beschreibt die strenge Konsistenz (strong consistency) eine Methode, bei der alle Knoten stets denselben Datenzustand anzeigen. Im Gegensatz dazu erlaubt die Eventual Consistency (schwache Konsistenz), dass die Daten auf verschiedenen Knoten nicht synchron sind, solange irgendwann Konsistenz erreicht wird.
Details:
- Strenge Konsistenz: Jede Leseoperation gibt den zuletzt geschriebenen Wert zurück.
- Eventual Consistency: Garantiert nur, dass alle Kopien der Daten schließlich konsistent werden.
- Trade-off: Strenge Konsistenz bietet höhere Verlässlichkeit, aber geringere Verfügbarkeit und Leistung.
- CAP-Theorem: Ein verteiltes System kann maximal zwei der drei Eigenschaften Konsistenz (Consistency), Verfügbarkeit (Availability) und Partitionstoleranz (Partition Tolerance) gleichzeitig erreichen.
Konsistenz- und Verfügbarkeitstheoreme (CAP-Theorem)
Definition:
CAP-Theorem: In verteilten Systemen können nicht gleichzeitig Konsistenz (Consistency), Verfügbarkeit (Availability) und Partitionstoleranz (Partition Tolerance) garantiert werden. Es müssen immer zwei der drei Eigenschaften gewählt werden.
Details:
- Konsistenz (Consistency): Jeder Lesevorgang erhält die zuletzt geschriebene Version der Daten.
- Verfügbarkeit (Availability): Jedes Anfragen erhält eine (nicht notwendigerweise die neueste) Antwort.
- Partitionstoleranz (Partition Tolerance): Das System funktioniert weiter trotz Ausfällen oder Nachrichtenverlusten zwischen den Knoten.
- Formel: Es gilt \(C + A \leq 2\).
- Typische Systeme: CA (relationale DBs), AP (NoSQL-Datenbanken wie Cassandra), CP (verteilte Dateisysteme wie HDFS).
Techniken zur Erhöhung der Fehlertoleranz (z.B. Redundanzstrategien, Fehlerkorrekturmechanismen)
Definition:
Techniken in verteilten Systemen zur Erhöhung der Fehlertoleranz ermöglichen den Betrieb trotz Fehlern, oft durch Redundanz oder Fehlerkorrektur.
Details:
- Redundanz: Mehrere Instanzen/Festplatten zur Vermeidung von Single Points of Failure (z.B. RAID).
- Fehlerkorrektur: Algorithmen, die fehlerhafte Daten erkennen und korrigieren (z.B. Hamming-Code, Reed-Solomon-Code).
- Replikation: Daten auf mehreren Knoten speichern, um Verfügbarkeit sicherzustellen.
- Checkpointing: Regelmäßige Speichern des Zustands eines Systems, um nach einem Fehler schnell wiederherstellen zu können.
- Heartbeat-Mechanismen: Überwachung der Systemkomponenten durch regelmäßige Signale, um Ausfälle schnell zu erkennen.
Kommunikationsparadigmen (z.B. RPC, Message Queues)
Definition:
Kommunikationsparadigmen wie RPC und Message Queues definieren, wie verschiedene Teile eines verteilten Systems miteinander interagieren.
Details:
- RPC (Remote Procedure Call): Prozedur in einem entfernten System aufrufen, als wäre sie lokal.
- Message Queues: Nachrichten in einer Warteschlange speichern und asynchron zwischen Systemkomponenten austauschen.
- RPC synchrones Kommunikationsmodell.
- Message Queues asynchrones Kommunikationsmodell.
- RPC typische Anwendung: Funktionsaufrufe über Netzwerke.
- Message Queues typische Anwendung: Entkopplung von Systemkomponenten und Lastverteilung.
Transaktionsmanagement und ACID-Prinzipien in verteilten Datenbanken
Definition:
Verwalten von Transaktionen zur Sicherstellung von Datenkonsistenz und Zuverlässigkeit in verteilten Systemen.
Details:
- ACID-Prinzipien: Atomicity, Consistency, Isolation, Durability.
- Atomarität: Transaktionen werden vollständig oder gar nicht ausgeführt.
- Konsistenz: Transaktionen führen das System von einem konsistenten Zustand zum nächsten.
- Isolation: Gleichzeitige Transaktionen beeinflussen sich nicht gegenseitig.
- Dauerhaftigkeit: Nach Abschluss einer Transaktion bleiben die Daten dauerhaft gespeichert.
- 2-Phasen-Commit (2PC) und 3-Phasen-Commit (3PC) Protokolle zur Koordination in verteilten Umgebungen.
- \textbf{2PC:} Vorbereitung: alle Knoten stimmen zu oder lehnen ab, Commit/Abort: tatsächliche Durchführung.
- \textbf{3PC:} Zusätzliche Phase, um in unsicheren Zuständen einen Rollback zu ermöglichen.
Verfügbarkeits- und Zuverlässigkeitsstrategien (z.B. Checkpoints, Zustandsprotokolle)
Definition:
Strategien zur Sicherstellung der Verfügbarkeit und Zuverlässigkeit in verteilten Systemen.
Details:
- Checkpoints: Regelmäßige Speicherung des Systemzustands zur Wiederherstellung nach Fehlern.
- Zustandsprotokolle: Protokollierung von Zustandsübergängen zur Nachverfolgung und Rücksetzung bei Fehlern.
- Fehlertoleranz: Strategien wie Replikation und Redundanz zur Aufrechterhaltung des Dienstes bei Teilausfällen.
- Verfügbarkeit: Maß für die Betriebszeit eines Systems (\(Verfügbarkeit = \frac{Betriebszeit}{Gesamtzeit}\)).
- Zuverlässigkeit: Wahrscheinlichkeit, dass ein System für einen bestimmten Zeitraum fehlerfrei arbeitet (\(R(t) = e^{-\frac{t}{MTBF}}\)).