2017-07-19 6 views
0

Das hört sich vielleicht nach einer dummen Frage an, aber ich wollte immer noch jemanden/Experten, der das beantwortet/bestätigt.cassandra write Durchsatz und Skalierbarkeit

Lets sagen, ich habe einen 3-Knoten-Cassandra-Cluster. Sagen wir, ich habe eine Datenbank und nur eine Tabelle. Für diese einzelne Tabelle lässt sich sagen, dass ich einen Durchsatz von 1K Schreib/Sekunde mit 3 Knoten Cassandra bekomme. Wenn morgen meine Schreiblast für diese Tabelle auf 10K oder 20K erhöht wird, kann ich diese Schreiblast bewältigen, indem ich die Größe des Clusters um beispielsweise 10x oder 20x vergrößere?

Mein Verständnis von Cassandra sagt, es ist möglich (wie Cassandra ist sowohl lesen und schreiben skalierbar), aber möchte ein Experte zu bestätigen.

Antwort

1

Ja, Cassandra hat lineare Skalierbarkeit.

Die Skalierbarkeit ist linear, wie in der Tabelle unten gezeigt. Jedes Client-System generiert ungefähr 17.500 Schreibanforderungen pro Sekunde, und es gibt keine Engpässe, wenn wir den Datenverkehr erhöhen. Jeder Client hat 200 Threads ausgeführt, um Datenverkehr über den Cluster zu generieren.

enter image description here

Quelle: https://medium.com/netflix-techblog/benchmarking-cassandra-scalability-on-aws-over-a-million-writes-per-second-39f45f066c9e

1

Datastax heißt es:

Was der Nutzen von Apache Cassandra sind?

Massively skalierbare Ringarchitektur: Basierend auf den besten von Amazon Dynamo und Google BigTable, Cassandras Peer-to-Peer-Architektur überwindet die Grenzen der Master-Slave-Designs und ermöglicht sowohl eine hohe Verfügbarkeit und eine hohe Skalierbarkeit.

Lineare Skalierungsleistung: Knoten, die einem Cassandra-Cluster hinzugefügt werden (alle online), erhöhen den Durchsatz Ihrer Datenbank in einer vorhersagbaren, linearen Weise für Lese- und Schreiboperationen.


Die Antwort ist also JA, es ist möglich. Es kann einige Zeit dauern, einen neuen Knoten hinzuzufügen und Token neu zu verteilen. Aber es wird skaliert, wenn Sie die Anzahl der Knoten ändern.

Wenn Sie weitere Informationen verstehen müssen, wie es skaliert, überprüfen Sie diese Links unten:

  1. Benchmarking Cassandra Scalability on AWS
  2. Adding nodes to Cassandra
  3. Adding, replacing, moving and removing nodes
0

Ja, es ist so, aber mit die einzige Bemerkung. Sie sollten den Replikationsfaktor (RF) und den Konsistenzgrad (CL) berücksichtigen, da sie auch das Skalierungsverhalten beeinflussen.
Wenn Sie zum Beispiel anfänglich die 10 Knoten mit RF = 3 haben und die Anzahl der Knoten bis zu 20 mit derselben RF = 3 erhöhen, erhalten Sie den linearen Anstieg des Schreibdurchsatzes.
Wenn Sie jedoch den Lesedurchsatz erhöhen möchten, müssen Sie RF erhöhen. Und mit der erhöhten RF musste die Schreibkonsistenz gesenkt werden, um den Schreibdurchsatz zu verbessern.
Zusammenfassend können Sie den Lese- und Schreibdurchsatz nicht linear mit den gleichen RF- und CL-Parametern erhöhen.

0

Ja - aber nur, wenn Sie Ihre Daten richtig modelliert wird - vor allem Ihre Daten müssen gleichmäßig auf die Partition Schlüssel verteilt werden (wie sie auf bestimmte Replikatknoten Karte) Hot Spots zu vermeiden. In Anbetracht dessen wird ja Cassandra horizontal gut skalieren.

Eine "Tabelle" in Cassandra wird auf alle Knoten in Ihrem Cluster verteilt. Jeder Knoten ist für eine Reihe von Tokens verantwortlich, die Hashes Ihres Partitionsschlüsselteils Ihres Primärschlüssels sind.

Wenn Sie nun beispielsweise die Anzahl der Knoten verdoppeln, werden die vorhandenen Token-Bereiche halbiert und verteilt, während die neuen Knoten gebootet werden. Daher muss jeder Knoten nur die Hälfte Ihrer anfänglichen Anfragen bearbeiten. Wenn Sie Ihre Anforderungen danach verdoppeln, wird jeder Knoten als ungefähr die gleiche Last wie zuvor.

Für rechenintensive Anfragen - die Wahl eines höheren Replikationsfaktors hilft, wenn Sie für eine Weile mit veralteten Daten leben können (z. B. Lesen und Schreiben mit niedriger Konsistenz).

Es gibt gute Tutorials von DataStax verfügbar hier https://academy.datastax.com/