2016-09-06 2 views
0

Я ищу некоторые идеи по достижению согласованности EACH_QUORUM на сценарии с 3-мя центрами данных с допуском для потери 1 центра данных для записи.EACH_QUORUM с допуском для потери данных Datacenter

Основываясь на моем понимании, EACH_QUORUM не терпит потерю центра обработки данных. Все мои записи не удастся, пока центр обработки данных не работает. Один из вариантов - повторить запрос с более низким уровнем согласованности, например «QUORUM».

Опция, которую я ищу, есть, если есть способ удалить неисправный DC и достичь EACH_QUORUM на оставшихся двух живых датацентрах. Со стороны сервера, единственный способ, о котором я могу думать, - это вывести из строя все узлы отказавшего центра обработки данных, что является громоздким.

Предполагая, что мое клиентское приложение знает, что датацентр не работает, есть ли способ от клиента клиента Cassandra перейти в список живых центров обработки данных, поэтому узел-координатор пытается достичь EACH_QUORUM только в этих датацентрах.

Поймите любую информацию об этом.

+0

Возможный дубликат [Настройка Apache Cassandra для аварийного восстановления] (http://stackoverflow.com/questions/13647921/configuring-apache-cassandra-for-disaster-recovery) – Raedwald

ответ

0

Ваша идея повторения с local_quorum может быть выполнена путем реализации RetryPolicy и применения его к сеансу. Поскольку драйвер знает, что он не сможет достичь, чтобы достичь each_quorum, он на самом деле не попробует его, и вы можете обработать ошибку в политике повтора, вместо того, чтобы позволить пузыриться до вашего кода приложения. Я пробовал этот подход успешно.

Другая идея, которую я рассматривал, была отдельной сессией для каждого DC (настроенной как «локальный DC») и выполнялась асинхронно против каждого. Затем в зависимости от ошибки и того, что я могу собрать из состояния кластера, запишите предупреждение или выбросьте ошибку.

-1

Я не уверен, что это хорошее и эффективное решение, это всего лишь идея.

Вы можете временно restrict replication для недоступных: пространства ключей

cqlsh> ALTER KEYSPACE keyspace1 WITH REPLICATION = 
{'class' : 'NetworkTopologyStrategy', 'upDC1' : 3, 'upDC2' : 3, 'downDC' : 0 }; 

Когда центр обработки данных приходят к UP вы можете восстановить фактическое количество репликации для этого центра обработки данных и выполнения ремонта.

0

Зачем использовать EACH_QUORUM, если вы ищете возможность пережить отказ DC? Используйте LOCAL_QUORUM, затем - он был разработан именно для этого.

 Смежные вопросы

  • Нет связанных вопросов^_^