Home

Konsistenzmodelle

Konsistenzmodelle beschreiben die Garantien, die ein verteiltes System hinsichtlich der Sichtbarkeit und der Reihenfolge von Updates über mehrere Replikate hinweg bietet. Sie legen fest, wann Änderungen für Clients sichtbar werden, wie Konflikte behandelt werden und welche Reihenfolge von Operationen konsistent erscheint. Die Wahl eines Modells beeinflusst Latenz, Verfügbarkeit und Fehlertoleranz sowie das Anwendungsdesign.

Starke Konsistenz umfasst Modelle wie Linearizability. Linearizability bedeutet, dass jeder Aufruf so erscheint, als ob er

Kausale Konsistenz sorgt dafür, dass kausale Beziehungen zwischen Operationen respektiert werden: Wenn eine Operation B von

Eventual Consistency ist ein eher schwaches Modell: Replikate werden nach Updates irgendwann konsistent, sofern keine neuen

Praktisch bieten viele verteilte Datenbanken tunbare Konsistenz: Cassandra, DynamoDB oder CockroachDB erlauben eine Stufenauswahl pro Operation

zu
einem
bestimmten
Zeitpunkt
zwischen
Anfrage
und
Antwort
stattgefunden
hätte
und
es
eine
globale,
zeitunabhängige
Reihenfolge
aller
Operationen
gibt.
Solche
Systeme
bieten
einfache
Programmiermodelle,
erfordern
jedoch
oft
Synchronisation
über
mehrere
Knoten.
Eine
verwandte
Stufe
ist
die
sequentielle
Konsistenz,
bei
der
alle
Prozesse
dieselbe
totale
Reihenfolge
der
Operationen
sehen,
die
Reihenfolge
muss
aber
nicht
mit
der
realen
Zeit
übereinstimmen.
A
abhängt,
erscheint
B
erst,
nachdem
A
sichtbar
geworden
ist.
Unabhängige
Operationen
können
in
unterschiedlicher
Reihenfolge
auftreten.
Mechanismen
wie
Vector
Clocks
erfassen
solche
Abhängigkeiten.
Updates
auftreten.
Es
reduziert
Latenz
und
erhöht
Verfügbarkeit,
birgt
aber
das
Risiko
vorübergehender
Inkonsistenzen.
Anti-Entropie-/Gossip-Protokolle
oder
CRDTs
helfen
bei
Konfliktlösung
und
Rekonkiliation.
(z.
B.
ONE,
QUORUM,
ALL).
Spanner
erreicht
starke
globale
Konsistenz
durch
TrueTime,
eine
verteilte
Uhr,
die
Zeitstempel
für
Transaktionen
bereitstellt.
Die
CAP-Theorie
besagt,
dass
in
verteilten
Systemen
oft
nur
zwei
der
drei
Eigenschaften
Konsistenz,
Verfügbarkeit
und
Partitionstoleranz
gleichzeitig
garantiert
werden
können.