2016-01-06 8 views
1

У нас есть 2 узла кластера Cassandra. Коэффициент репликации равен 1, а уровень согласованности - 1. Мы не используем репликацию, так как данные, которые мы вставляем, очень велики для каждой записи. Как реагирует Кассандра, когда узел опущен, когда запись выполняется в этом узле? Мы используем API-интерфейс Hector от клиента Java. Я понимаю, что Cassandra выполнит запись на другой запущенный узел.как кассандра реагирует, когда запись выполняется в узле и узле, опустилась

ответ

2

Нет, используя CL.ONE, запись не будет выполняться, если вставленные данные относятся к токенранту сбитого узла. Уровень согласованности определяет, сколько реплик-узлов должно ответить, чтобы принять запрос.

Если вы хотите писать, даже если узел реплики не работает, вам нужно использовать CL.ANY. ЛЮБОЙ убедитесь, что координатор сохраняет подсказку для запроса. Советы хранятся в таблице System.Hints. После того, как реплика снова вернется, все подсказки будут обработаны и отправлены на предстоящий узел.

Редактировать

Вы получите следующее сообщение об ошибке:

com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency ONE (1 required but only 0 alive) 
+0

Другими словами, запрос на запись будет возвращать ошибку в ситуации OP описывает. – Brandon

+0

Спасибо Зерд и Брэндон. API-интерфейс Hector не вызывает каких-либо исключений, но в журнале отображаются предупреждающие сообщения о статусе узла вниз. Когда я завершаю узел 2, тогда API Hector бросает исключение. Я использую версию cassandra 2.0.5 и версию hector 1.1 –