Ich denke, dieses Problem ist am besten auf der Cassandra-Benutzer-Mailing-Liste aufgegriffen; dort sind die Menschen.
Cassandra hat keinen automatischen Lastenausgleich noch aber es kann in nicht allzu ferner Zukunft tun. Der 0.5-Zweig kann dazu jetzt fähig sein.
Im Wesentlichen, wenn Sie einen Knoten auf einem bereits laufenden System bootstrappen, sollte es einen Punkt im Ring finden, der das Gleichgewicht am besten belastet und sich dort hinstellt. Vorausgesetzt, Sie fügen Knoten einzeln hinzu (d. H. Warten Sie, bis ein Knoten das Bootstrapping abgeschlossen hat, bevor Sie ein weiteres hinzufügen), sollte das ziemlich gut funktionieren, vorausgesetzt, Ihre Schlüsselverteilung ändert sich im Laufe der Zeit nicht zu sehr.
Ihre Schlüssel können sich jedoch im Laufe der Zeit ändern (insbesondere wenn sie zeitbasiert sind). Daher sollten Sie möglicherweise eine Problemumgehung verwenden.
Es hängt davon ab, was Sie Bereichsscan möchten. Wenn Sie nur den Bereich PART des Schlüssels durchsuchen müssen, können Sie das Bit hacken, das nicht im Bereich scannen soll, und diesen als ersten Teil des Schlüssels verwenden.
ich den Begriff „Partition“ hier zum Teil verweisen des Schlüssels wollen Sie nicht Scan verwenden werden
function makeWholeKey(partition, key) {
return concat(make_hash(partition), partition, key);
}
Nun reichen, wenn Sie die Schlüssel innerhalb einer bestimmten Partition reichen wollen scannen , können Sie Bereich scannen zwischen makeWholeKey (p, Start) und makeWholeKey (p, Ende)
Aber wenn Sie die Partitionen scannen wollen, haben Sie Pech gehabt.
Aber Sie können Ihre Knoten haben Token, die gleichmäßig um den Bereich der Ausgabe von make_hash() verteilt sind, und Sie erhalten gleichmäßig verteilten Daten (vorausgesetzt, Sie haben genug Partitionen, die nicht alle auf einer oder zwei Hash-Werte)
Ich fand mehr Details über die 'anhängende Hash zu Schlüssel' Idee in diesem Blog http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/ – deepblue