Мне обязательно нужно минимум 3 узла / сервера для кластера Cassandra или будет достаточно 2? - PullRequest
14 голосов
/ 25 февраля 2010

Конечно, можно запустить кластер из одного узла, но мне нужен некоторый уровень отказоустойчивости.

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

Насколько я понимаю, 3 узла - это минимум, необходимый для кластера Cassandra, поскольку между двумя узлами не существует возможного большинства, а для разрешения конфликтов версий требуется большинство. Ой, подождите, я думаю о "векторных часах" и Riak? Ack! Кассандра использует временные метки для разрешения конфликтов.

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

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

Спасибо!

1 Ответ

23 голосов
/ 25 февраля 2010

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

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

Имея всего 2 узла, вы можете выбрать, хотите ли вы иметь строгую согласованность (запись с ALL) или доступность перед лицом отказа одного узла (запись с ONE), но не с обоими.Конечно, если вы пишете с ОДНОЙ Кассандрой, она будет делать подсказки и т.д. по мере необходимости, чтобы в конечном итоге сделать это согласованным.

...