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

Если мы определим этот параметр как N (N , где M - размер кластера, означает ли это, что возможна следующая ситуация:

1 дата-центр. две одновременные записи произошли успешно (они обновили один и тот же ключ с разными значениями)? И, следовательно, два последовательных чтения возвращают разные значения для одного и того же ключа? Я прав?

3
voipp 25 Фев 2019 в 16:24

2 ответа

Лучший ответ

Да, мы можем настроить согласованность на основе требований для чтения и записи. Кворум рекомендуется уровень согласованности для Кассандра для одного DC. мы можем рассчитать снизу Кворум = N / 2 + 1, где N - количество реплик. Согласованность мы можем установить снизу командой CONSISTENCY [level]

Для получения более подробной информации о настраиваемой согласованности, пожалуйста, обратитесь ниже.

https://medium.com/dugglabs/data-consistency-in-apache-cassandra-part-1-7aee6b472fb4 https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutDataConsistency.html

https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshConsistency.html

1
LetsNoSQL 25 Фев 2019 в 16:45

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

Уровень согласованности всегда зависит от выбранного вами фактора репликации.

Если RF = 3 из 5 узлов постоянного тока, то уровень согласованности QUORUM или LOCAL_QUORUM означает 2 узла из 3, имеющих реплику.

Любая из приведенных ниже комбинаций должна дать вам правильные данные после настройки:

WRITE=ALL READ=ONE  
WRITE=ONE READ=ALL  
WRITE=LOCAL_QUORUM READ=LOCAL_QUORUM  

Вы можете настроить уровень согласованности в вашем приложении в соответствии с загрузкой приложения.

По моему мнению, номер 3 LOCAL_QUORUM должен работать лучше, так как иногда узел может быть под высокой нагрузкой или, возможно, не работает. Ваше приложение не будет затронуто.

В случае, если у вас больше записей, чем READ; WRITE CL = ALL сделает ваше приложение медленным.

0
Anil Kapoor 26 Фев 2019 в 05:01