Verteilte Systeme - Cheatsheet
Konsens-Algorithmen: Paxos-Algorithmus
Definition:
Paxos-Algorithmus ist ein Konsens-Algorithmus für verteilte Systeme, der es ermöglicht, dass mehrere Knoten in einem Netzwerk eine einheitliche Entscheidung treffen, selbst wenn einige Knoten fehlerhaft sind.
Details:
- Ziel: Konsens in verteilten Systemen trotz Ausfällen.
- Teilnehmer: Proposer, Acceptor, Learner.
- Phasen: Vorbereitung, Akzeptanz, Lernen.
- Sicherheit: Einzigartige Sequenznummern zur Konfliktvermeidung.
- Mehrdeutigkeit vermeiden durch mehrheitliche Akzeptoren.
Verteilte Hashtabellen und Anwendungen
Definition:
Verteilte Hashtabellen (Distributed Hash Tables, DHTs) sind eine Klasse von verteilten Systemen, die einen dezentralen Mechanismus zum Speichern und Abrufen von Daten basierend auf Hashing-Algorithmen bieten.
Details:
- Schlüssel-Wert-Speicherung verteilt über mehrere Knoten
- Nutzen Hash-Funktionen zur Bestimmung der Datenplatzierung
- Hauptmerkmale: Skalierbarkeit, Fehlertoleranz und Effizienz
- Bekannte Implementierungen: Chord, Kademlia, Pastry, Tapestry
- Anwendungen: Peer-to-Peer Netzwerke, verteilte Dateisysteme, dezentrale soziale Netzwerke
- Suchen eines Schlüssels \textit{k} in einem Netzwerk aus \textit{N} Knoten geschieht in \textit{O(log N)} Schritten
- Konsistenz und Replikation zur Verbesserung der Zuverlässigkeit
Virtualisierungstechniken im Cloud Computing
Definition:
Techniken zur Abstraktion und Verwaltung physischer Ressourcen in Cloud-Umgebungen.
Details:
- Hypervisor-Typen: Typ-1 (Bare Metal) und Typ-2 (Hosted)
- VMs: simulierte, isolierte Umgebungen
- Container: leichtere, weniger isolierte Einheiten im Vergleich zu VMs (z.B., Docker)
- Vorteile: Skalierbarkeit, Flexibilität, Ausfallsicherheit
- Für alle Virtualisierungstypen relevant: Ressourcenzuweisung und -verwaltung
- Bereitstellung: Automatisierte und orchestrierte Prozesse
Sichere Netzwerkprotokolle
Definition:
Mechanismen zum Schutz der Datenübertragung in Netzwerken durch Verschlüsselung und Authentifizierung.
Details:
- Verschlüsselung: Schutz der Daten vor unerlaubtem Zugriff (Symmetrisch/asymmetrisch).
- Authentifizierung: Sicherstellung der Identität der Kommunikationspartner (z.B. Zertifikate).
- Integrität: Sicherstellung, dass Daten nicht verändert wurden (Hash-Funktionen).
- Beispiele: TLS/SSL, IPsec, SSH, HTTPS.
- Verwendete Protokolle: RSA, AES, ECC, Diffie-Hellman.
Datenbank-Sharding
Definition:
Technik zur Verteilung von Datenbankinhalt auf mehrere Server, um Last zu balancieren und Performance zu verbessern.
Details:
- Sharding-Strategien: Horizontales Sharding (Zeilen) und Vertikales Sharding (Spalten)
- Wichtig bei großen Datenbanken, die nicht auf einer einzelnen Maschine betrieben werden können
- Erfordert geeignete Algorithmen zur Verteilung der Daten und zur Wiederzusammenführung bei Anfragen
- Komplexität bei Transaktionen und Abfragen über mehrere Shards hinweg
- Anwendungsgebiete: Social Media, E-Commerce, Cloud-Dienste
Redundanz-Strategien für Fehlertoleranz
Definition:
Techniken zur Erhöhung der Zuverlässigkeit und Verfügbarkeit von Systemen durch die Bereitstellung zusätzlicher Ressourcen oder Informationen.
Details:
- Arten der Redundanz: räumliche (Hardware-Duplikate), zeitliche (Wiederholung von Prozessen), informationelle (Ergänzende Informationen)
- Hot Standby: Redundante Einheit aktiv und synchronisiert
- Cold Standby: Redundante Einheit inaktiv bis benötigt
- Voting: Mehrere Instanzen stimmen über Ergebnis ab
- Replikation: Daten oder Dienste werden auf mehreren Knoten gespiegelt
- Ziel: Erhöhung der Fehlertoleranz, Vermeidung von Single Points of Failure (SPOFs)
Skalierbarkeit und Elastizität in Cloud-Systemen
Definition:
Skalierbarkeit und Elastizität in Cloud-Systemen: Fähigkeit eines Systems, seine Ressourcen an den aktuellen Bedarf anzupassen.
Details:
- Skalierbarkeit: Fähigkeit, Ressourcen vertikal (mehr Ressourcen für eine Instanz) oder horizontal (mehr Instanzen) zu erweitern
- Elastizität: Fähigkeit, Ressourcen automatisch entsprechend der Nachfrage zuzu- oder abzuschalten
- Vertikale Skalierung: z.B. CPU, RAM erweitern
- Horizontale Skalierung: z.B. neue Server hinzufügen
- Ziele: Kostenoptimierung, Performance-Gewährleistung, Ausfallsicherheit
- Metriken: Antwortzeit, Durchsatz, Kosten- und Ressourcennutzung
Fehlertolerante Algorithmen
Definition:
Algorithmen, die auch bei partiellen Ausfällen funktionsfähig bleiben.
Details:
- Nutzen Redundanz, Replikation und Voter-Mechanismen.
- Können teilweise oder vollständig Fehler erkennen und korrigieren.
- Verwendung in Systemen mit hohen Verfügbarkeitsanforderungen.
- Gängige Algorithmen: Byzantine Fault Tolerance, Paxos.
- Mathematische Modelle und Wahrscheinlichkeitsrechnungen zur Bestimmung der Fehlertoleranz.