ResponseError: Недостаточно реплик, доступных для запроса в последовательности SERIAL (2 требуется, но только 1 в живых) - PullRequest
0 голосов
/ 24 февраля 2020

Я новичок в Cassandra, в настоящий момент я столкнулся с проблемой, мои настройки cassandra следующие,

  1. 1 D C, 1 кластер
  2. 3 узла.
  3. SimpleStrategy
  4. длительная запись: true
  5. Коэффициент репликации: 2 при создании пространства ключей.
  6. Используйте IF NOT EXISTS для вставки данных в таблицу.
  7. Начальный узел: 2 из них

Затем я отключаю один начальный узел и получаю следующую ошибку:

ResponseError: Недостаточно реплик, доступных для запроса при согласованности SERIAL (2 требуется, но только 1 живой)

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Это нормально, для SERIAL требуется транзакция Paxos с кворумом реплик. Для РФ 2 кворум равен 2; таким образом, вы не можете допустить, чтобы какой-либо узел не записывал в SERIAL пространство ключей с RF 2.

Практическое правило: не используйте RF 2, это бесполезно. Ваш кворум: (2/2) +1 = 2, но для RF 3 это тот же кворум. Поэтому вы всегда должны предпочитать RF 3. Если вы измените свое пространство ключей на RF 3, ваше приложение сможет писать в SERIAL, даже если одна реплика не работает.

Также см. https://www.ecyrd.com/cassandracalculator/

0 голосов
/ 24 февраля 2020

В соответствии с пониманием последовательность последовательностей эквивалентна QUORUM. У вас RF = 2 в кластере из 3 узлов, поэтому данные в Cassandra вставлены на основе га sh. поэтому, когда вы вставили данные в кластер, данные могут быть вставлены на оба начальных узла. Таким образом, когда вы извлекаете данные с одного исходного узла, вы можете получить эту ошибку, поскольку кластер не достигает желаемого уровня согласованности. Пожалуйста, обратитесь к ссылке для более подробной информации. https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbInternals/dbIntConfigSerialConsistency.html

...