cassandra: стратегия для развертывания единого центра обработки данных

Мы планируем использовать apache shiro и cassandra для распределенного управления сеансами, очень похожее на упомянутый @ https://github.com/lhazlewood/shiro-cassandra-sample

Нужен совет по развертыванию cassandra в Amazon EC2:

В EC2 у нас есть следующие настройки: один регион, 2 зоны доступности (AZ), 4 узла.

Соответственно настроена кассандра:
Single DataCenter: DC1 две стойки: Rack1, Rack2 4 узла: Rack1_Node1, Rack1_Node2, Rack2_Node1, Rack2_Node2

Используемая стратегия репликации данных: NetworkTopologyStrategy.

Поскольку Cassandra используется как хранилище данных сеанса, нам нужна высокая согласованность и доступность.

Мои вопросы:

  1. Сколько реплик я должен держать в кластере? Думаю о 2 репликах, по 1 на стойку.
  2. Каким должен быть уровень согласованности (CL) для операций чтения и записи? Думая о КВОРУМЕ как для чтения, так и для записи, учитывая 2 реплики в кластере.
  3. Если 1 стойка не работает, будет ли Cassandra писать и читать успешно с указанной выше конфигурацией? Я знаю, что он может использовать подсказку для временного отключения узла, но работает ли он для операций чтения / записи?
  4. Есть ли другие предложения по моим требованиям?

person kiran    schedule 07.04.2014    source источник


Ответы (2)


Обычно использование четного числа узлов - не лучшая идея, как и четное число зон доступности. В этом случае, если одна из стоек выйдет из строя, весь кластер исчезнет. Я бы рекомендовал использовать 3 стойки с 1 или 2 узлами на стойку, 3 реплики и КВОРУМ для чтения и записи. Тогда кластер выйдет из строя только в случае отказа двух узлов в зоне доступности.

person VHristov    schedule 08.04.2014
comment
С 2 узлами в 2 стойках / AZ, если 1 стойка выйдет из строя, будет ли запись и чтение Cassandra успешной с CL = QOURUM и использованием NetworkTopologyStrategy? - person kiran; 09.04.2014
comment
Боюсь, что это не сработает, так как половина вашего кластера выйдет из строя. Подробную информацию о НТС. - person VHristov; 09.04.2014
comment
Это кажется интересным ... datastax.com/doc- source / developer / java-driver / reference /, вы можете намекнуть, что драйвер должен попробовать с пониженным уровнем согласованности !! Кажется, отличная особенность, обожаю кассандру !! - person kiran; 10.04.2014

Вы, наверное, слышали о теореме CAP в теории баз данных. Если нет, вы можете узнать подробности о теореме в Википедии: https://en.wikipedia.org/wiki/CAP_theorem или просто погуглите. В нем говорится, что для распределенной базы данных с несколькими узлами база данных может достичь только двух из следующих трех целей: согласованности, доступности и устойчивости к разделам.

Cassandra предназначена для достижения высокой доступности и устойчивости к разделам (AP), но для этого жертвует согласованностью. Однако вы можете установить уровень согласованности на all в Cassandra, чтобы перенести его на CA, что, по-видимому, является вашей целью. Ваш параметр кворума 2 по сути такой же, как "все", поскольку у вас есть 2 реплики. Но в этой настройке, если единственный узел, содержащий данные, не работает, клиент получит сообщение об ошибке для чтения / записи (не допускает разделение).

Вы можете посмотреть видео здесь, чтобы узнать больше (для этого требуется учетная запись datastax): https://academy.datastax.com/courses/ds201-cassandra-core-concepts/introduction-big-data

person Dichen    schedule 16.03.2016
comment
Спасибо за Ваш ответ. Да, узнал о CAP и о том, как работает кассандра за последние 2 года ;-) - person kiran; 06.07.2016