2016-04-30 4 views
1

У меня есть приложение, которое выполняет только вставки/удаления в cassandra. Все операции записи (вставки/удаления) выполняются с использованием уровня согласованности QUORUM, операция чтения в настоящее время выполняется с использованием QUORUM, но мне интересно, если в этом случае (когда нет обновлений данных) уровень согласованности ONE даст одинаковые результаты как КВОРУМ.Уровень согласованности Quorum vs One for reads after Вставки

ответ

1

Не обязательно. Может быть, ваш запрос на чтение отправляется на один узел, который еще не получил или применил обновления. Уровень согласованности QUORUM позволяет некоторым узлам не иметь обновленных данных; используя уровень согласованности ONE для чтения, вы можете прочитать устаревшие данные. Возможно, ваше приложение может справиться с этой ситуацией - это вам решать. Но вы должны знать, что уровень согласованности ONE для чтения может не вернуть данные, которые вы ожидаете в своей ситуации.

Надеюсь, это поможет!

+0

Спасибо за ответ, нет гарантии, даже если мы используем политику балансировки нагрузки TokenAwarePolicy? Я, хотя в этом случае запрос всегда отправляется на узлы, которые должны были запрашивать ключи. – llirik

+0

Запрос будет отправлен на узлы, у которых _should_ есть запрошенные ключи (на основе хеширования - но опять же, это условие гонки, между обновлением и чтением. Использование «TokenAwarePolicy» уменьшает шансы, при чтении с использованием уровень согласованности 'ONE', что вы получите устаревшее чтение, но не полностью его предотвратите. – Castaglia

+0

Я также должен указать, что если вы думаете о наличии нескольких« центров обработки данных »в вашей конфигурации Cassandra, вы, вероятно, захотите для использования уровня согласованности 'LOCAL_QUORUM', а не' QUORUM', последний применяет кворум _across datacenters_, который может добавить нежелательную задержку (или, может быть, это поведение вам нужно?), это небольшая проблема, о которой нужно знать. – Castaglia

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