Was ist letztendlich Konsistenz?
Eventual Consistency ist ein Programmiermodell, bei dem Programmierer davon ausgehen, dass sich die aktuelle Version eines bestimmten Programms über einen ausreichend langen Zeitraum hinweg und ohne Änderungen an einem System verteilt, bis jedes Replikat des Programms konsistent ist. Das Konzept der eventuellen Konsistenz wird bei Programmiermethoden wie der optimistischen Replikation, dem verteilten gemeinsamen Speicher und verteilten Transaktionen verwendet. In Bezug auf Datenbanken wird die Konsistenz in drei Schritten erreicht. Zunächst werden die verteilten Informationen auf dem System verfügbar gemacht. Darauf folgt ein weicher Zustand, in dem verschiedene Benutzer möglicherweise noch mit verschiedenen Versionen der Daten arbeiten. und schließlich wird Konsistenz erreicht, und alle Computer haben Zugriff auf identische Daten.
Eine der sichtbarsten Möglichkeiten, um die Konsistenz zu gewährleisten, sind Online-Softwareaktualisierungen. In den ersten Sekunden, nachdem ein Update veröffentlicht wurde, wird es niemand mehr haben. Es ist nicht genug Zeit vergangen, damit Benutzer der Software das Update herunterladen und installieren können. Dies ist der Status "Verfügbar". Das Update existiert, muss aber noch verteilt werden. Mit der Zeit wird das Update von einigen Benutzern heruntergeladen und von anderen nicht. Wenn jedoch genügend Zeit verstrichen ist, wird jeder, der die Software verwendet, auf die neueste Version aktualisiert. Dies ist die Voraussetzung für den Zustand der Konsistenz: Wenn genügend Zeit zur Verfügung steht, werden alle Aktualisierungen im gesamten System verbreitet.
Während das System auf eine eventuelle Konsistenz hinarbeitet, sind Konflikte unvermeidlich. Diese treten auf, wenn die Programmversion oder Informationen, die sich derzeit auf dem Computer befinden, nicht mit der "Modellversion" des Programms übereinstimmen. Programme werden normalerweise eingerichtet, um solche Konflikte zu erkennen und zu verwalten. Wenn die Dateien auf einem bestimmten Computer älter sind als die neueste Modellversion der betreffenden Software oder Daten, fordert das System den Benutzer normalerweise auf, ein Update zu starten, um die Abweichung zu beheben.
Drei mögliche Methoden stehen zur Verfügung, um diese Lösungen zu erzielen: Schreibreparatur, Lesereparatur und asynchrone Reparatur. Diese Methoden bringen alle die Version des Programms oder der Daten in Einklang mit dem konsistenten Modell. Der Hauptunterschied zwischen diesen liegt in der Art und Weise, wie das System den Reparaturvorgang zeitlich festlegt. Alle diese Operationen haben Vor- und Nachteile.
Bei einer Schreibreparatur werden Änderungen am auf dem Computer gespeicherten Code während eines Schreibvorgangs vorgenommen, wenn der Computer bereits etwas auf die Festplatte des Systems schreibt. Dies behebt die Inkonsistenz, bringt das Programm oder die Daten in Einklang mit dem Modell, verlangsamt jedoch vorübergehend den ursprünglichen Schreibvorgang. Bei einer Lesereparatur tritt die Korrekturoperation während eines Lesezyklus von der Festplatte auf. Dies verlangsamt wiederum den Lesevorgang. Bei der asynchronen Reparatur findet die Reparatur statt, wenn weder eine Lese- noch eine Schreiboperation stattfindet, was zur Inanspruchnahme von Leerlaufzyklen auf der CPU führt.