Концепция стойки Cassandra и структура базы данных

Я новичок в Cassandra и хотел бы узнать больше о стойках и структуре Cassandra.

Предположим, у меня есть около 70 семейств столбцов в Cassandra и два экземпляра AWS2.

  1. Сколько центров обработки данных будет использоваться?
  2. Сколько узлов будет в каждой стойке?
  3. Можно ли разделить семейство столбцов на несколько пространств ключей?

person Community    schedule 10.03.2014    source источник
comment
Пожалуйста, задавайте только один вопрос в сообщении. Отредактируйте свой пост, чтобы он задавал один вопрос, и поместите другой вопрос в новый пост.   -  person Raedwald    schedule 10.03.2014


Ответы (1)


Цель информирования Cassandra о логических стойках и центрах обработки данных состоит в том, чтобы обеспечить дополнительные уровни отказоустойчивости. Идея (как описано в этом документе, под «Стратегия сетевой топологии») заключается в том, что приложение должно по-прежнему функционировать, даже если одна стойка или центр обработки данных перестанет работать. В общем, Кассандра...

размещает реплики в том же центре обработки данных, обходя кольцо по часовой стрелке, пока не достигнет первого узла в другой стойке. NetworkTopologyStrategy пытается разместить реплики в разных стойках, поскольку узлы в одной стойке (или аналогичной физической группе) часто выходят из строя одновременно из-за проблем с питанием, охлаждением или сетью.

Таким образом, вы также можете запрашивать свои данные по LOCAL_QUORUM, в котором QUORUM ((replication_factor / 2) + 1) вычисляется только из узлов, присутствующих в том же центре обработки данных, что и узел-координатор. Это уменьшает влияние задержки между центрами обработки данных.

Что касается ваших вопросов:

  1. Сколько центров обработки данных используется, полностью зависит от вас. Если у вас есть только два экземпляра AWS, их размещение в разных логических центрах обработки данных возможно, но имеет смысл только в том случае, если вы планируете использовать уровень согласованности ONE. Как и в случае, если один экземпляр выходит из строя, вашему приложению нужно беспокоиться только о поиске еще одной реплики. Но даже в этом случае стукач может найти данные только о тот или иной экземпляр.

  2. Опять же, вы можете определить количество узлов, которое вы хотите иметь для каждой стойки. Но, как я указал в № 1, если у вас есть только два экземпляра, от разделения их на разные центры обработки данных или стойки мало что получится.

  3. Я не верю, что можно разделить семейство столбцов на несколько пространств ключей. Но, кажется, я знаю, к чему ты клонишь. Каждое пространство ключей будет создано для каждого экземпляра. Поскольку у вас есть 2 экземпляра, вы сможете указать коэффициент репликации 1 или 2. Если у вас было 3 экземпляра, вы можете установить коэффициент репликации 2, и тогда, если вы потеряете 1 экземпляр, у вас все равно будет доступ ко всем данные. Поскольку у вас есть только 2 экземпляра, вам нужно иметь возможность обрабатывать один из них, поэтому вам нужно убедиться, что оба экземпляра имеют копию каждой строки (коэффициент репликации 2).

Действительно, логическая структура центра обработки данных/стойки становится более полезной по мере увеличения количества узлов в вашем кластере. Имея только два, мало что можно получить, разделив их дополнительными логическими барьерами. Для получения дополнительной информации прочитайте два документа, на которые я ссылался выше:

Apache Cassandra 2.0: репликация данных

Apache Cassandra 2.0: снитчи

person Aaron    schedule 10.03.2014