Wenn ich es richtig verstehe, wird der Schreibvorgang bei einer Schreibanforderung an alle N Replikate gesendet, und die Operation ist erfolgreich, wenn die ersten W Antworten empfangen werden. Ist das korrekt?
Wenn ja, dann scheint es, dass alle Replikate zusammen mit Hinted Handoff so schnell wie möglich alle Schreibvorgänge erhalten. Müssen wir in diesem Fall wirklich eine Lesereparatur machen?
Danke.
Kurze Antwort: Sie müssen noch eine Reparatur lesen.
Längere Antwort: Es gab keine gute Diskussion über die Andeutung von Hinted Handoff, also Ich schrieb eine .
Lesen Sie für Cassandra 1.0+ den aktualisierten Artikel . Der entscheidende Teil ist:
Auf den ersten Blick scheint es, dass Sie mit Hinted Handoff sicher entkommen können, ohne eine Reparatur zu benötigen. Dies gilt nur, wenn Sie nie einen Hardwarefehler haben.
Es ist möglich, dass eine angedeutete Übergabe aus verschiedenen Gründen fehlschlägt. So wie der Knoten, in den der Hinweis geschrieben wurde, kann fehlschlagen. Wenn die Lesereparatur aktiviert ist, wenn die angedeutete Weiterreichung aus irgendeinem Grund nicht funktioniert, wird sie durch die Reparatur repariert. Und dann sollten Sie auch "nodetool repair" auf Ihren Knoten ausführen, um alle Fälle abzufangen, bei denen sowohl die Reparatur als auch die angedeutete Übergabe fehlschlagen, um alle Daten zu reparieren.
Sieh dir das Wiki an, um weitere Informationen zu erhalten.
Die Konsistenzstufe kann für jeden Schreibvorgang (und Lesevorgang) variiert werden.
Nehmen wir beispielsweise an, wir haben 10 Knoten mit einem Replikationsfaktor von 3.
Wenn wir jedoch mit einer Konsistenzstufe von ANY schreiben, kann möglicherweise keines der drei möglichen Replikate die Daten initialisieren, wenn der Schreibaufruf zurückkehrt. Wenn wir die Konsistenzstufe ONE verwenden, muss nur eines der drei möglichen Replikate die Daten enthalten, bevor der Schreibvorgang zurückkehrt. Daher kann ein Lesevorgang direkt nach dem Schreibvorgang veraltete Daten anzeigen, wenn der Lesevorgang eine niedrige Konsistenz aufweist Ebene.
Siehe Ссылка für die Definitionen der Konsistenzstufen, insbesondere die folgenden:
Lesen Sie Level ONE: Wird den Datensatz zurückgeben zurückgegeben von der ersten Replik an reagieren. Eine Konsistenzprüfung ist immer möglich getan in einem Hintergrundthread, um irgendwelche zu reparieren Konsistenzprobleme wann ConsistencyLevel.ONE wird verwendet. Dies bedeutet, dass nachfolgende Anrufe haben Korrigieren Sie die Daten auch beim ersten Lesen erhält einen älteren Wert. (Das nennt man ReadRepair)
Siehe auch Ссылка :
Read repair bedeutet, dass wenn eine Abfrage ist gemacht gegen einen bestimmten Schlüssel, führen wir ein Digest-Abfrage für alle Replikate des Schlüssels und schiebe das Neueste Version auf nicht mehr aktuelle Repliken. Wenn eine niedrige ConsistencyLevel war angegeben, dies geschieht in der Hintergrund nach dem Zurückgeben der Daten von der nächsten Replik zum Klient; Ansonsten ist es vorher getan die Daten zurückgeben.
Tags und Links cassandra