Подтвердить что ты не робот

Узлы семян Кассандры и клиенты, подключающиеся к узлам

Я немного запутался в узлах семян Cassandra и о том, как клиенты предназначены для подключения к кластеру. Я не могу найти этот бит информации в документации.

У клиентов только список семян node, и каждый node делегирует новый хост для подключения клиента? Являются ли семенные узлы действительно только для node до node обнаружения, а не специального node для клиентов?

Если каждый клиент использует небольшую выборку случайных узлов в DC для подключения к?

Или, должен ли каждый клиент использовать все узлы в DC?

4b9b3361

Ответ 1

Отвечая на мой собственный вопрос:

Семена

Из FAQ:

Семена используются во время запуска для обнаружения кластера.

Также из документации DataStax в "Сплетни":

Серийное обозначение node не имеет никакой цели, кроме начальной загрузки процесса сплетен для добавления новых узлов в кластер. Узлы семян не одиноки момент неудачи, и у них нет какой-либо другой специальной цели в кластерные операции за пределами начальной загрузки узлов.

Из этих деталей кажется, что семя ничего особенного для клиентов.

Клиенты

Из документации DataStax по клиентским запросам:

Все узлы в Кассандре являются сверстниками. Клиентский запрос на чтение или запись может перейдите в любой node в кластере. Когда клиент подключается к node и выдает запрос на чтение или запись, что node служит координатором для этой конкретной операции клиента.

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

Я понимаю, что пул узлов, к которым подключается клиент, может быть просто несколькими (случайными?) узлами в DC, чтобы обеспечить потенциальные сбои.

Ответ 2

семенные узлы служат двум целям.

  • они выступают в качестве места для новых узлов, чтобы объявить себя кластеру. поэтому без хотя бы одного живого семени node, никакие новые узлы не могут присоединиться к кластеру, потому что они понятия не имеют, как связаться с несетевыми узлами, чтобы получить статус кластера.
  • семенные узлы действуют как горячие точки сплетен. поскольку узлы чаще сплетничают с семенами, чем не семенами, семена имеют тенденцию иметь более актуальную информацию, и поэтому весь кластер имеет более актуальную информацию. это причина , вы не должны делать все узлы семян. Аналогичным образом, это также означает, что все узлы в данном центре обработки данных должны иметь одинаковый список семенных узлов в файле cassandra.yaml. как правило, 3 семенных узла на центр обработки данных являются идеальными.

клиентские контактные точки cassandra просто предоставляют клиенту кластерную топологию, после чего клиент может подключиться к любому node в кластере. как таковые, они похожи на семенные узлы, и имеет смысл использовать одни и те же узлы для семян и контактов клиента. однако вы можете безопасно настроить как можно больше контактов клиента cassandra, как вам нравится. единственное другое соображение состоит в том, что первый контакт node клиента устанавливает его близость к центру обработки данных, поэтому вы можете заказать свои контактные точки, чтобы предпочесть данный центр обработки данных.

для получения дополнительной информации о контактных точках см. этот вопрос: Драйвер Java Cassandra: сколько контактных точек разумно?

Ответ 3

Ваш ответ правильный. Единственное, что я хотел бы добавить, это то, что рекомендуется использовать один и тот же список семян (т.е. В вашем cassandra.yaml) по всему кластеру, как нечто вроде "лучшей практики". Помогает распространению сплетен в хороших регулярных тарифах, так как семена обрабатываются (очень минимально) по-разному с помощью сплетен (см. http://wiki.apache.org/cassandra/ArchitectureGossip).