|
| 1 | +\documentclass{beamer} |
| 2 | + |
| 3 | +\usetheme{CambridgeUS} |
| 4 | +\usecolortheme{dolphin} |
| 5 | + |
| 6 | +\title{Verteilte Systeme} |
| 7 | +\subtitle{Konsens, Fehlertoleranz und Replikation} |
| 8 | +\author{Prof. Dr. Martin Becke} |
| 9 | +\date{\today} |
| 10 | + |
| 11 | +\begin{document} |
| 12 | + |
| 13 | +\begin{frame} |
| 14 | + \titlepage |
| 15 | +\end{frame} |
| 16 | + |
| 17 | +\begin{frame}{Konsensbildung in verteilten Systemen} |
| 18 | + Konsensbildung ist der Prozess, bei dem eine Gruppe von Knoten in einem verteilten System eine gemeinsame Vereinbarung über einen Wert oder Zustand trifft. \newline |
| 19 | + \textbf{Wesentliche Herausforderungen:} |
| 20 | + \begin{itemize} |
| 21 | + \item Fehlertoleranz. |
| 22 | + \item Kommunikationslatenz. |
| 23 | + \item Sicherheit. |
| 24 | + \end{itemize} |
| 25 | + \textbf{Analogie:} Wie eine Jury, die ein Urteil fällen muss – alle Geschworenen müssen sich einigen, auch wenn einige anderer Meinung sind oder nicht erreichbar sind. |
| 26 | +\end{frame} |
| 27 | + |
| 28 | +\begin{frame}{Quorumsabstimmung} |
| 29 | + Bei der Quorumsabstimmung muss eine Mindestanzahl von Knoten (das Quorum) zustimmen, um eine Entscheidung zu treffen. \newline |
| 30 | + \textbf{Kompromiss:} |
| 31 | + \begin{itemize} |
| 32 | + \item Kleineres Quorum: Schnellere Entscheidungen, aber höhere Fehlerwahrscheinlichkeit. |
| 33 | + \item Größeres Quorum: Höhere Zuverlässigkeit, aber langsamere Entscheidungen. |
| 34 | + \end{itemize} |
| 35 | +\end{frame} |
| 36 | + |
| 37 | +\begin{frame}{Zentralisierte vs. dezentrale Konsensbildung} |
| 38 | + \begin{itemize} |
| 39 | + \item \textbf{Zentralisiert:} Ein Knoten (Leader) steuert den Prozess. Einfach, aber anfällig für Ausfälle des Leaders. \newline \textit{Analogie:} Wie eine Monarchie. |
| 40 | + \item \textbf{Dezentralisiert:} Alle Knoten sind gleichberechtigt. Robuster und skalierbarer, aber komplexer. \newline \textit{Analogie:} Wie eine Demokratie. |
| 41 | + \end{itemize} |
| 42 | + Hybride Ansätze kombinieren beide Strategien. |
| 43 | +\end{frame} |
| 44 | + |
| 45 | +\begin{frame}{Fallbeispiel Zentral: ZooKeeper Atomic Broadcast (ZAB)} |
| 46 | + ZAB ist ein Konsensprotokoll, das von Apache ZooKeeper verwendet wird. \newline |
| 47 | + \textbf{Eigenschaften:} |
| 48 | + \begin{itemize} |
| 49 | + \item Garantiert zuverlässige Replikation von Updates. |
| 50 | + \item Ermöglicht geordnete Vereinbarungen über Änderungen am Systemzustand. |
| 51 | + \end{itemize} |
| 52 | + \textbf{Analogie:} Wie ein Orchesterdirigent, der sicherstellt, dass alle Musiker im gleichen Takt spielen. |
| 53 | +\end{frame} |
| 54 | + |
| 55 | +\begin{frame}{Fallbeispiel Dezentral: Blockchain-Mechanismen} |
| 56 | + Blockchain-Mechanismen ermöglichen dezentrale Konsensbildung. \newline |
| 57 | + \textbf{Beispiele:} |
| 58 | + \begin{itemize} |
| 59 | + \item \textbf{Proof-of-Work (PoW):} Miner lösen komplexe Rätsel, um Transaktionen zu validieren und neue Blöcke hinzuzufügen. |
| 60 | + \item \textbf{Proof-of-Stake (PoS):} Die Wahrscheinlichkeit, einen Block hinzuzufügen, hängt vom Anteil am Netzwerk ab. |
| 61 | + \end{itemize} |
| 62 | +\end{frame} |
| 63 | + |
| 64 | +\begin{frame}{Blockchain: Vorteile und Nachteile} |
| 65 | + \textbf{Vorteile:} |
| 66 | + \begin{itemize} |
| 67 | + \item Dezentralisierung. |
| 68 | + \item Transparenz. |
| 69 | + \item Sicherheit. |
| 70 | + \end{itemize} |
| 71 | + \textbf{Nachteile:} |
| 72 | + \begin{itemize} |
| 73 | + \item Skalierbarkeit. |
| 74 | + \item Hoher Energieverbrauch (bei PoW). |
| 75 | + \item Anfälligkeit für 51%-Angriffe. |
| 76 | + \item Datenunveränderlichkeit (Problematisch bei Fehlern). |
| 77 | + \end{itemize} |
| 78 | +\end{frame} |
| 79 | + |
| 80 | +\begin{frame}{Fehlertoleranz} |
| 81 | + Fehlertoleranz ist die Fähigkeit eines Systems, trotz Fehlern funktionsfähig zu bleiben. \newline |
| 82 | + \textbf{Strategien:} |
| 83 | + \begin{itemize} |
| 84 | + \item Redundanz. |
| 85 | + \item Wiederherstellung. |
| 86 | + \item Fehlertolerante Kommunikation. |
| 87 | + \item Byzantinische Fehlertoleranz. |
| 88 | + \end{itemize} |
| 89 | +\end{frame} |
| 90 | + |
| 91 | +\begin{frame}{Fehlerarten} |
| 92 | + Fehler in verteilten Systemen können auftreten als: |
| 93 | + \begin{itemize} |
| 94 | + \item \textbf{Hardwarefehler:} Ausfall von Komponenten. |
| 95 | + \item \textbf{Softwarefehler:} Bugs im Code. |
| 96 | + \item \textbf{Kommunikationsfehler:} Verlust oder Verzögerung von Nachrichten. |
| 97 | + \item \textbf{Byzantinische Fehler:} Fehlerhafte oder böswillige Knoten. |
| 98 | + \end{itemize} |
| 99 | +\end{frame} |
| 100 | + |
| 101 | +\begin{frame}{Fehlermodell-Terminologie} |
| 102 | + Unterschiedliche Begriffe beschreiben verschiedene Aspekte von Fehlern: |
| 103 | + \begin{itemize} |
| 104 | + \item \textbf{Fault (Fehler):} Ursache des Problems. |
| 105 | + \item \textbf{Error (Fehlzustand):} Inkonsistenter Systemzustand. |
| 106 | + \item \textbf{Failure (Ausfall):} Beobachtbares Ergebnis. |
| 107 | + \end{itemize} |
| 108 | + Diese Begriffe sind wichtig für die Analyse und Behebung von Fehlern. |
| 109 | +\end{frame} |
| 110 | + |
| 111 | +\begin{frame}{Fehlerarten: Fail-Stop, Fail-Noisy, Fail-Silent} |
| 112 | + \begin{itemize} |
| 113 | + \item \textbf{Fail-Stop:} Der Knoten hält an und signalisiert den Fehler. |
| 114 | + \item \textbf{Fail-Noisy:} Der Knoten liefert falsche Ergebnisse. |
| 115 | + \item \textbf{Fail-Silent:} Der Knoten hält an, ohne den Fehler zu signalisieren. |
| 116 | + \end{itemize} |
| 117 | +\end{frame} |
| 118 | + |
| 119 | +\begin{frame}{Redundanz (1/2)} |
| 120 | + Redundanz erhöht die Fehlertoleranz durch zusätzliche Ressourcen: |
| 121 | + \begin{itemize} |
| 122 | + \item \textbf{Datenredundanz:} Mehrere Kopien der Daten (Replikation, Erasure Coding). |
| 123 | + \item \textbf{Rechenredundanz:} Parallele Ausführung von Berechnungen. |
| 124 | + \end{itemize} |
| 125 | +\end{frame} |
| 126 | + |
| 127 | +\begin{frame}{Redundanz (2/2)} |
| 128 | + \begin{itemize} |
| 129 | + \item \textbf{Kommunikationsredundanz:} Mehrere Kommunikationspfade. |
| 130 | + \item \textbf{Prozess-Resilienz:} System bleibt trotz Prozessausfällen funktionsfähig. |
| 131 | + \end{itemize} |
| 132 | +\end{frame} |
| 133 | + |
| 134 | +\begin{frame}{Replikation} |
| 135 | + Replikation erstellt und verwaltet Kopien von Daten auf mehreren Knoten. \newline |
| 136 | + \textbf{Vorteile:} |
| 137 | + \begin{itemize} |
| 138 | + \item Erhöhte Verfügbarkeit. |
| 139 | + \item Bessere Zuverlässigkeit. |
| 140 | + \item Verbesserte Skalierbarkeit. |
| 141 | + \item Schnellere Wiederherstellung. |
| 142 | + \end{itemize} |
| 143 | +\end{frame} |
| 144 | + |
| 145 | +\begin{frame}{Replikation: Strategien} |
| 146 | + \begin{itemize} |
| 147 | + \item \textbf{Passive Replikation (Master-Slave):} Ein Knoten (Master) bearbeitet Anfragen, andere Knoten (Slaves) werden synchronisiert. |
| 148 | + \item \textbf{Aktive Replikation (Multi-Master):} Alle Knoten bearbeiten Anfragen, erfordert komplexe Konsistenzverwaltung. |
| 149 | + \end{itemize} |
| 150 | +\end{frame} |
| 151 | + |
| 152 | +\begin{frame}{Replikation: Cold, Warm, Hot} |
| 153 | + \textbf{Unterschiede in der Aktualität der Replikate:} |
| 154 | + \begin{itemize} |
| 155 | + \item \textbf{Cold:} Seltene Aktualisierung (z. B. Backups). |
| 156 | + \item \textbf{Warm:} Regelmäßige Aktualisierung, aber nicht in Echtzeit. |
| 157 | + \item \textbf{Hot:} Nahezu Echtzeit-Aktualisierung, hohe Verfügbarkeit. |
| 158 | + \end{itemize} |
| 159 | +\end{frame} |
| 160 | + |
| 161 | +\begin{frame}{Erasure Coding} |
| 162 | + Erasure Coding teilt Daten in Fragmente und erstellt Paritätsinformationen. \newline |
| 163 | + \textbf{Vorteile:} |
| 164 | + \begin{itemize} |
| 165 | + \item Speicherplatzsparender als Replikation. |
| 166 | + \item Ermöglicht Datenwiederherstellung bei Teilverlust. |
| 167 | + \end{itemize} |
| 168 | + \textbf{Analogie:} Wie ein RAID-System, bei dem Daten über mehrere Festplatten verteilt werden. |
| 169 | +\end{frame} |
| 170 | + |
| 171 | +\end{document} |
0 commit comments