Konsens (englisch Consensus) bezeichnet in verteilten Systemen die Aufgabe, mehrere unabhängige Knoten auf einen gemeinsamen Wert zu bringen — etwa auf die Reihenfolge von Log-Einträgen, den aktuellen Leader oder das Ergebnis einer Entscheidung. Erst wenn alle funktionierenden Knoten demselben Ergebnis zustimmen, kann ein Cluster als ein einziges zuverlässiges System arbeiten.
Die drei Anforderungen
Ein Korrekter Konsens-Algorithmus garantiert drei Eigenschaften:
- Validity: Der gewählte Wert ist einer der tatsächlich vorgeschlagenen Werte.
- Agreement: Alle korrekten Knoten treffen dieselbe Entscheidung.
- Termination: Jeder korrekte Knoten trifft irgendwann eine Entscheidung.
Verletzt ein Protokoll nur eine dieser Eigenschaften, ist es für echte Produktionssysteme unbrauchbar.
Das FLP-Ergebnis
1985 bewiesen Michael Fischer, Nancy Lynch und Michael Paterson ein berühmtes Unmöglichkeits-Resultat (FLP-Theorem, JACM): In einem vollständig asynchronen System, in dem auch nur ein Prozess ausfallen kann, gibt es keinen deterministischen Algorithmus, der Validity, Agreement und Termination gleichzeitig garantiert. Das klingt paradox, weil Konsens in der Praxis täglich funktioniert — die Auflösung liegt in der Asynchronie-Annahme: Reale Systeme arbeiten mit Zeitlimits und Timeouts, brechen unentschiedene Runden ab und starten neue. Damit umgehen sie die FLP-Falle praktisch, auch wenn sie sie theoretisch nicht besiegen.
Algorithmen in der Praxis
Der älteste wichtige Algorithmus ist Paxos (Leslie Lamport, 1998), bekannt für korrektheit, aber schwer verständlich. Raft (Ongaro & Ousterhout, 2014) formuliert dasselbe Problem mit klaren Rollen und wurde dadurch zum Standard für neue Systeme. Für Umgebungen mit bösartigen Teilnehmern gibt es byzantinische Protokolle wie PBFT. Fast alle praktischen Algorithmen bauen auf Quoren auf: Eine Mehrheit der Knoten muss zustimmen, damit ein Vorschlag gilt.
State Machine Replication
Die wichtigste Anwendung von Konsens ist die Replikation von Zustandsmaschinen: Jeder Knoten führt denselben deterministischen Zustandsautomaten aus; Konsens stellt sicher, dass alle Knoten dieselben Befehle in derselben Reihenfolge anwenden. Daraus entstehen ausfallsichere Systeme wie Cluster-Datenbanken oder Service-Discovery-Lösungen — und die Verbindung zum CAP-Theorem ist eng: Konsens priorisiert Konsistenz und zahlt dafür mit eingeschränkter Verfügbarkeit bei Partitionen.
Verwandte Grundlagen: Datenbank-Replikation, Eventual Consistency, Hochverfügbarkeit, ACID.