Нужно ли мне как минимум 3 узла/серверов для кластера Cassandra или 2 хватает?

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

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

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

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

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

Спасибо!

Ответ 1

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

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

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