Heim >Web-Frontend >js-Tutorial >Konsistenzmodelle und Replicache
Das Konsistenzmodell ist eine Reihe von Vorschriften darüber, wie viel Konsistenz in einem verteilten System bereitgestellt wird. In den vorherigen Beiträgen gibt es Informationen zum Kompromiss zwischen Latenz und Konsistenz in der PACELC-Theorie und es geht darum, wie viel Konsistenz gemäß diesem Kompromiss bereitgestellt wird.
Replicache, das im vorherigen Beitrag besprochen wurde, ist ebenfalls eine Art verteiltes System. Replicache soll der kausalen Konsistenz folgen.
Quelle
Konsistenz, die es Ihnen ermöglicht, Werte immer in chronologischer Reihenfolge abzulesen. Alle Lesevorgänge, die nach dem Schreiben des Werts erfolgen, lesen immer diesen Wert. Um dies zu erfüllen, sind zwei Bedingungen notwendig. Es gibt eine globale Uhr, die von allen Knoten gemeinsam genutzt wird und mit dieser synchronisiert werden muss, und der Schreibvorgang muss sofort ausgeführt werden.
w(x)a: Schreiben Sie den Wert a in x, r(x)a: Lesen Sie den Wert a aus x
Wenn w(x)a zum Zeitpunkt t in Knoten 1 auftritt und r(x) nach t Delta (0,0000000000000001s) in Knoten 2 auftritt, muss Knoten 2 den Wert a lesen.
Eine globale Uhr muss vorhanden sein, um die Operation zu serialisieren, damit die Operation nicht zur gleichen Zeit t ausgeführt wird, und das Schreiben muss sofort durchgeführt werden, damit der geschriebene Wert zur Zeit t Delta gelesen werden muss.
Aber das ist eigentlich unmöglich. Daher existiert die strikte Konsistenz als Theorie.
Wenn in den folgenden Situationen die strenge Konsistenz eingehalten wird
Die richtige Antwort lautet wie folgt.
Das Kernschlüsselwort der sequentiellen Konsistenz ist „Globale Ordnung“. Alle Schreib-/Lesevorgänge müssen sich so verhalten, als ob es eine einzige einheitliche Sequenz gäbe. Außerdem müssen die von jedem Prozess (Client) ausgeführten Vorgänge in dieser Reihenfolge ausgeführt werden.
Welche Werte können im folgenden Fall p3 und p4 lesen?
Das Folgende ist dasselbe wie die strikte Konsistenz, sodass auch die sequentielle Konsistenz erfüllt ist.
Sie finden unten die globale Reihenfolge, daher ist die sequentielle Konsistenz korrekt.
Globale Reihenfolge: w(x)a, r(x)a, w(x)b, r(x)b
Im folgenden Fall wird a jedoch vor b geschrieben, aber später gelesen. In diesem Fall ist die sequentielle Konsistenz nicht erfüllt.
Kausal bedeutet Ursache-Wirkungs-Beziehung. "Passiert-bevor (→)" Es ist wichtig zu verstehen, dass es sich um eine Beziehung handelt.
A → B gilt in den folgenden Fällen.
Kausale Konsistenz ist eine Regel, bei der diese Ursache-Wirkungs-Beziehung in allen Knoten sichtbar ist.
Der folgende Fall ist kausale Konsistenz.
Die einzigen „Passiert-vorher“-Beziehungen, die hier gefunden werden können, sind w(x)a → r(x)a und w(x)b → r(x)b, die von allen Prozessen erfüllt werden. Es ist in Ordnung, dass P3 zuerst b liest. Dies liegt daran, dass die beiden Schreibvorgänge unabhängig voneinander sind und daher keine Ursache-Wirkungs-Beziehung von w(x)a → w(x)b besteht.
Das Folgende stellt keine kausale Konsistenz dar. Der Grund dafür ist, dass es eine Ursache-Wirkungs-Beziehung von w(x)a → w(x)c gibt und c in P3 vor a gelesen wird.
Eventuell Es ist eine Regel, die (irgendwann) konsistent wird. Irgendwann, wenn keine Schreibvorgänge mehr stattfinden und sich das Netzwerk stabilisiert, werden schließlich alle Knoten denselben Wert sehen. Es handelt sich um eine sehr endliche Konvention.
Replicache soll der kausalen Konsistenz folgen. Dies ist eine etwas stärkere kausale Konsistenz, also finden wir es später heraus.
Das obige ist der detaillierte Inhalt vonKonsistenzmodelle und Replicache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!