Я использую Cassandra 2.2, и у меня есть приложение, которое требует высокого уровня согласованности.
Я настроил один кластер центра обработки данных с 3 узлами. Мое пространство ключей создано с replication_factor
из 2. В каждом файле configuration.yaml я установил 2 seed_provider (например, NODE_1 и NODE_3).
Важно то, что мое приложение должно быть полнофункциональным, даже если один из узлов не работает.
В настоящее время у меня есть некоторые проблемы с согласованностью и тайм-аутом, когда мое приложение связывается с кластером.
Я прочитал всю документацию по Cassandra 2.2 и пришел к выводу, что лучшим CONSISTENCY LEVEL
для моих операций записи должно быть QUORUM
и для моих операций чтения ONE
, но у меня все еще есть некоторые проблемы с согласованностью.
Прежде всего, правильный ли выбор - иметь высокий уровень согласованности? Кроме того, рассматриваются ли операции UPDATE
и DELETE
как операции записи или чтения, поскольку, например, операция обновления с предложением WHERE
все еще должна «читать» данные? Я не уверен, пространственно в контексте рабочего процесса записи кассандры.
Моя вторая проблема - это тайм-аут во время операций записи. Простой и легкий INSERT
иногда получает "Cassandra timeout during write query at consistency QUORUM (2 replicas were required but only 1 acknowledged the write)
" или иногда даже "... 0 подтверждено", даже если все мои 3 узла работают.
Есть ли другие параметры, которые я должен проверить, например, write_request_timeout_in_ms, со значением по умолчанию 2000 мс (что уже является высоким значением)?