2012-10-10 5 views
7

Erhöht ein zunehmender Replikationsfaktor in einem Cluster auch die Lesegeschwindigkeit?Cassandra: größerer Replikationsfaktor = schneller lesen?

Ich verstehe, dass wenn Replikationsfaktor 1 ist, und es gibt 6 Knoten und die Token sind gleichmäßig verteilt - dann ist es nur 16,66% Chance, dass gegeben Knoten die Daten hat, wenn es nicht hat, fragt es den Knoten verantwortlich und das braucht zusätzliche Zeit.

Ich denke, dass mit Replikationsfaktor auf 6 festgelegt, hat jeder Knoten die vollständige Datenmenge und kann Daten sofort abrufen, ohne andere Knoten (wir verwenden lesen Konsistenz = 1). Ein zunehmender Replikationsfaktor sollte die Lesegeschwindigkeit erhöhen. Ist das richtig?

Unsere App hat relativ wenige schreibt aber mehr als 10k get() Operationen pro Sekunde. Wir haben 6 Knoten im Cluster und müssen alle Leseoperationen extrem schnell durchführen. Deshalb suchen wir nach einer Möglichkeit, die Leseleistung von cassandra zu verbessern.

Antwort

4

Das ist richtig, solange man ConsistencyLevel.ONE verwenden.

+0

Können Sie eine Referenz dafür bereitstellen. Es scheint meiner Intuition zu widersprechen. Soweit ich weiß, werden Lesevorgänge an * alle * Replikate gesendet, unabhängig davon, welche Konsistenzstufe verwendet wird. – user1202136

+0

@ user1202136 Ich weiß, dass dies ein alter Post ist, aber nur um Verwirrung zu vermeiden für jeden, der das liest ... Schreib- und Lesekonsistenz ist in Cassandra stimmbar. Hier ist ein ganzer Abschnitt auf Lesekonsistenz http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dmlClientRequestsRead.html –

4

Ich laufe eigentlich die ycsb benchmarks- 100% Schreib- und 100% Read- dies zu testen. Das Erhöhen des Replikationsfaktors scheint langsamere Lesevorgänge zu verursachen, während der Konsistenzgrad bei eins gehalten wird.

In einem 8-Knoten-Cluster hier sind die Zahlen, die ich bin immer:

16 Millionen Leseoperationen-ycsb Workload C

rep.factor _ Readtime (min)

1 _ 10,8840833333333

2 _ 11,1243666666667

4 _ 17,4050333333333

Für größere Größen ist der Sprung noch größer.

Kann mir jemand erklären, warum?

+0

Wenn ich Cassandra richtig verstanden hat, liest und schreibt geht auf * alle * Repliken, egal was die Konsistenzstufe ist. Daher sollte ein zunehmender Replikationsfaktor die Belastung der Knoten erhöhen. Tatsächlich bin ich überrascht, dass eine Verdopplung des Replikationsfaktors die Lesezeit nicht verdoppelt. – user1202136

+0

@ user1202136 Die Lese- und Schreibvorgänge werden nur dann an alle Replikate übertragen, wenn die entsprechenden Konsistenzen auf die Anzahl der Replikate, d. H. Den Replikationsfaktor, festgelegt sind. Standardmäßig wird nur von einem einzelnen Replikat gelesen. –

+0

@adarshhegde Sie haben Recht. Ich lese die Dokumentation erneut und andere Repliken werden nur als Teil der Lesereparatur mit einer niedrigeren Wahrscheinlichkeit kontaktiert, standardmäßig 0.1. Im Durchschnitt sind also mehr Replikate Teil des Lesevorgangs als der Konsistenzgrad, aber im Durchschnitt werden nicht alle von ihnen kontaktiert. http://docs.datastax.com/de/cassandra/1.2/cassandra/architecture/architectureClientRequestsRead_c.html – user1202136

Verwandte Themen