2016-06-14 2 views
0

Скажем, у нас есть кластер Cassandra из 2 узлов. Данные с диапазоном клавиш [A-D] вставляются в кластер. Грубо говоря, мы можем предположить, что узел 1 хранит данные с диапазоном клавиш [A-B], а узел 2 хранит данные с диапазоном клавиш [C-D]. Через некоторое время мы добавим еще 2 узла. Для балансировки необходимо перераспределить разделы, верно? Теперь мы ожидаем, что каждый узел хранит данные только для 1 ключа. Кассандра повторно назначает, а затем переносит существующие данные на новый узел (например, существующие данные с ключом B от узла 1 до узла 3)? И как?Как Кассандра переустанавливает разделы?

ответ

0

Cassandra uses vnodes or virtual nodes по умолчанию. У каждого узла нет одного диапазона (т. Е. [A-C]), но сотни (по умолчанию 256, num_tokens - cassandra.yaml). В зависимости от вашей версии эти диапазоны токенов назначаются случайными или ранними версиями, распределенными для максимизации равного распределения. Таким образом, если один узел падает или если вы добавляете узел, все узлы в кластере будут рядом с одним из этих диапазонов узлов, чтобы разделить нагрузку.

Смежные вопросы