Одним из наиболее важных понятий, которые нужно понять в Кассандре, является ее переменная «Уровень согласованности», или CL.Возможно, наиболее распространенным параметром является CL = QUORUM, что означает, что при RF = 3 (каждый фрагмент данных реплицируется на 3 узла), Cassandra потребует двух успешных ответов из двух реплик, прежде чем возвращать результат вclient.
При запросе определенного раздела координатор начнет с отправки запросов клиента в 2 из 3 реплик, которые, как известно, содержат раздел.Cassandra сохраняет оценку средней задержки ответа, и когда эта оценка прошла, она отправляет третий запрос третьей реплике.Такой таймаут произойдет в тех случаях, которые вы упомянули - если ответ не завершится быстро (не имеет значения, частично ли он завершен), отправляется третий запрос.Если два узла не работают одновременно, вы получите полный ответ, и клиенту не нужно ни о чем заботиться.Это функция «высокой доступности», которой славятся Cassandra и другие базы данных NoSQL.
Обратите внимание, что этот ответ верен даже для очень длинных ответов (сканирование всей таблицы или извлечение очень длинного раздела).Такие длинные ответы разбиты на «страницы» разумной длины, каждая страница выбирается в отдельном запросе и может быть получена из 2 из 3 реплик, не обязательно одной и той же.
Все, что я написал выше, такжеотносится как к Сцилле, так и к Кассандре.