2010-02-24 11 views
10

Sicherlich kann man einen Cluster mit einem einzigen Knoten betreiben, aber ich möchte ein gewisses Maß an Fehlertoleranz.Benötige ich mindestens 3 Knoten/Server für einen Cassandra-Cluster oder reicht 2?

Derzeit kann ich mir leiste zwei Server leasen (8 GB RAM, privaten VLAN @ 1GigE), aber nicht 3.

Mein Verständnis ist, dass 3 Knoten das Minimum für einen Cassandra-Cluster benötigt, weil es keine Möglichkeit Mehrheit ist zwischen 2 Knoten, und eine Mehrheit wird benötigt, um Versionskonflikte zu lösen. Oh warte, denke ich an "Vektoruhren" und Riak? Nein! Cassandra verwendet Zeitstempel zur Konfliktlösung.

Für 2 Knoten, was ist die empfohlene Lese-/Schreibstrategie? Sollte ich generell auf ALLE (beide) Knoten schreiben und von EINS lesen (N = 2; W = N/2 + 1; W = 2/2 + 1 = 2)? Cassandra wird wie gewohnt auch für 2 Knoten Anführungszeichen verwenden, ja?

Diese 2 Server befinden sich im selben Datenzentrum FWIW.

Danke!

Antwort

18

Wenn Sie Verfügbarkeit auf einem System mit RF = 2, Clustergröße = 2 benötigen, können Sie nicht ALL verwenden, oder Sie können nicht schreiben, wenn ein Knoten ausfällt.

Deshalb empfehlen die Leute 3 Knoten anstelle von 2, denn dann können Sie Quorum Reads + Writes tun und trotzdem eine starke Konsistenz und Verfügbarkeit haben, wenn ein einzelner Knoten ausfällt.

Mit nur 2 Knoten können Sie wählen, ob Sie starke Konsistenz (schreiben mit ALLEN) oder Verfügbarkeit angesichts eines einzelnen Knotenfehlers wollen (schreiben Sie mit EINEM), aber nicht beides. Natürlich, wenn Sie mit EINEM schreiben, wird Cassandra eine angedeutete Übergabe usw. nach Bedarf durchführen, um es schließlich konsistent zu machen.

+0

Ist das immer noch korrekt? Es scheint, als ob die Bedeutung von "Consistency Level ONE" in Ihrer Antwort eher der Consistency Level ANY in aktuellen Versionen von Cassandra entspricht. Ich nehme an, dass JEDER irgendwann von ONE gespalten wurde? –

+0

Wenn Ihre Knotenzahl der Anzahl der Replikate entspricht, die Sie haben, sind ONE und ANY gleichwertig. – jbellis