2

Es gibt zwei Definitionen, die ich im Internet gefunden habe:Was ist der Unterschied zwischen sequenzieller Konsistenz und eventueller Konsistenz?

Sequenzielle Konsistenz - das Ergebnis einer Ausführung ist dasselbe wie wenn die Operationen aller Prozessoren in einer bestimmten Reihenfolge ausgeführt würden und die Operationen jedes einzelnen Prozessors erscheinen in dieser Reihenfolge in der Reihenfolge, die durch ihr Programm angegeben ist.

Eventuelle Konsistenz - Wenn an einem bestimmten Datenelement keine neuen Aktualisierungen vorgenommen werden, geben schließlich alle Zugriffe auf dieses Element den letzten aktualisierten Wert zurück.

Die Definitionen sind mir klar. Ich verstehe jedoch nicht, wenn die Konsistenz nicht sequentiell ist. Ein Beispiel: Anfangswert in Mem ist 0. Horizontale Achse ist die Zeit.

P1:  write 1    (x) 
P2: read 0 read 0 read 0  read 1 read 1 read 1 

So gibt es einig sequenzielle Reihenfolge, die man, wenn wir "schreiben 1" in (x) eingelegt wird, und dies ist sequentielle Konsistenz per Definition. Wo liege ich falsch?

Antwort

0

Der Unterschied zwischen sequenzieller Konsistenz und eventueller Konsistenz liegt in den Garantien, die sie bieten.

Eventual Consistency nicht festgelegt:

  • Was
  • sind gleichzeitige Aktualisierungen in ein Register, wenn es passiert, wie lange die Dauer von Inkonsistenzen

Als Ergebnis dauert, auch nur eine einzige Client kann in eine Situation geraten, wenn sie ein Register ändert, aber ein Follow-up-Lesen gibt veraltete Daten zurück.

Derselbe Fall ist bei sequentieller Konsistenz per Definition unmöglich (die Gesamtfolge respektiert die Reihenfolge der Unterprozessoren).

Wenn außerdem ein Programm keine zeitkritischen Annahmen trifft und alle Clients (Prozessoren) nicht außerhalb des Systems kommunizieren, ist die sequentielle Konsistenz nicht von der Linearisierbarkeit zu unterscheiden. Im Gegensatz dazu ist die letztendliche Konsistenz eher dem Mangel an Konsistenz als der Linearisierbarkeit näher.