2010-02-24 2 views
10

Конечно, можно запустить кластер с одним узлом, но я бы хотел некоторый уровень отказоустойчивости.Нужно ли мне как минимум 3 узла/серверов для кластера Cassandra или 2 хватает?

В настоящее время я могу позволить себе арендовать два сервера (8 Гб оперативной памяти, частные VLAN @ 1GigE), но не 3.

Я понимаю, что 3 узла является необходимым минимумом для кластера Кассандрой, потому что нет никакой возможности большинства между 2 узла, и большинство требуется для разрешения конфликтов версий. О, подождите, я думаю о «векторных часах» и Riak? Ack! Cassandra использует временные метки для разрешения конфликтов.

Для 2-х узлов, какая рекомендуемая стратегия чтения/записи? Должен ли я вообще писать ВСЕ (оба) узла и читать из ОДНОГО (N = 2; W = N/2 + 1; W = 2/2 + 1 = 2)? Кассандра будет использовать намек-эстафетную передачу как обычно даже для 2 узлов, да?

Эти 2 сервера расположены в одном центре данных FWIW.

Спасибо!

ответ

18

Если вам нужна доступность в системе RF = 2, clustersize = 2, вы не можете использовать ВСЕ, или вы не сможете писать, когда узел опускается.

Вот почему люди рекомендуют 3 узла вместо 2, потому что тогда вы можете делать записи кворума + записи и по-прежнему иметь как сильную согласованность, так и доступность, если один узел опускается.

С помощью всего лишь двух узлов вы можете выбрать, хотите ли вы иметь сильную консистенцию (писать со всеми) или наличие перед лицом единственного отказа узла (писать с ONE), но не оба. Конечно, если вы пишете с помощью ONE, то cassandra будет делать намек на передачу обслуживания и т. Д., Чтобы сделать это в конечном итоге последовательным.

+0

Верно ли это? Кажется, что значение «Уровень согласованности ONE» в вашем ответе больше похоже на уровень непротиворечивости ANY на текущие версии cassandra. Я предполагаю, что в какой-то момент ЛЮБОЙ был раздвоен из ОДНОГО? –

+0

Когда количество узлов вашего экземпляра равно количеству реплик, у вас есть, ONE и ANY эквивалентны. – jbellis