2017-10-06 2 views
2

Ich habe ein Setup mit RF = 2 und alle meine Lese/Schreibvorgänge sind mit CL = 1 getan. Es gibt wenige Orte, an denen ich eine Sitzung öffne, einen Eintrag schreibe, einen Backend-Prozess einführe und erneut lese. Dies funktioniert meistens, aber manchmal gibt das Lesen Nil zurück. Wir vermuten, dass die Lesevorgänge vom Koordinatorknoten zu einem Knoten gehen, der sich von demjenigen unterscheidet, an dem der Schreibvorgang ausgeführt wurde. Nach meinem Verständnis sendet ein Koordinatorknoten die Leseanforderung an beide Replikknoten und gibt die Ergebnisse korrekt zurück.Cassandra sofortige Konsistenz mit RF = 2 und CL = 1

Wir sind nicht besorgt über die Updates für eine Zeile, da wir meistens sofortige Konsistenz nur für neu erstellte Zeilen benötigen. Wir brauchen Quoram wirklich nicht und die RF = 2 ist hauptsächlich für HA, um den Verlust eines Knotens zu tolerieren. Irgendwelche Hinweise darauf, wie sofortige Konsistenz mit RF = 2 und CL = 1 erreicht werden kann, werden sehr geschätzt.

+0

Sie können ziemlich direkte Konsistenz mit CL = 1 in einem multinode-Cluster nicht haben. –

Antwort

1

haben Sie eine RF = 3 mit QUORUM würde Ihnen sofortige Konsistenz mit der Fähigkeit, einzelne Knoten Verlust haben. Alles andere als das und es ist unmöglich, es zu garantieren, da es immer Fenster geben wird, in denen ein Knoten Mutationen vor anderen sieht.

R + W > N to have a consistent read/write. 
R (number of nodes needed for read) + W (number of nodes needed for write) > N (number of nodes with data, RF) 

mit CL 1 auf liest/schreibt und RF = 2 Sie haben 1 + 1, die nicht> 2. ist können Sie alle nutzen, zwei oder QUORUM entweder lesen oder schreiben, und Sie würden Ihre Konsistenz erhalten (nur weil rf = 2 für TWO und QUORUM), aber dann wird jeder Knotenausfall Fähigkeiten zum Lesen oder Schreiben zunichte machen.

+0

Danke Chris für die Antwort. Wir gehen meistens mit Rf = 3 und Quoram. Ich wollte sehen, ob jemand Erfahrung hat, read_repair_chance = 1. Damit kann ich mit CL = 1 schreiben, aber liest wird CL = ALL entsprechen und dennoch einen Knotenausfall tolerieren wie in https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsRepairNodesReadRepair.html – Chetan

+0

Sie können Knotenausfälle verarbeiten, die Abfragen werden jedoch nicht konsistent. Eine CL.ONE-Abfrage mit read request = 1.0 gibt immer noch inkonsistente Daten zurück, aber bei Inkonsistenzen werden sie asynchron behoben, nachdem Ihre Abfrage an Sie zurückgegeben wurde. Dies ist anders als das Blockieren von Lesereparaturen, die Sie bei höheren Konsistenzstufen erhalten. –

Verwandte Themen