Как сделать так, чтобы узлы Cassandra имели одинаковые данные?
У меня есть два компьютера, каждый из которых является узлом Cassandra, и они хорошо взаимодействуют друг с другом. Насколько я понимаю, Cassandra будет реплицировать данные друг другу, но всегда будет запрашивать определенные части у одного из них. Я хотел бы, чтобы данные копировались друг в друга, чтобы у них были одни и те же данные, но они использовали данные только с локального узла. Это возможно?
Фоновая причина заключается в том, что приложение в каждом узле продолжает генерировать и загружать много данных, и в то же время оба выполняют некоторые задачи с высокой нагрузкой на ЦП. Что происходит, так это то, что один узел сохраняет данные и внезапно не может их больше найти, потому что они были сохранены в другом узле, который достаточно занят, чтобы ответить этими данными.
1 ответ
Технически вам просто нужно изменить коэффициент репликации на количество узлов и настроить ваше приложение на постоянное чтение с локального узла, используя режим балансировки нагрузки из белого списка. Но это может вам не помочь, потому что, если ваши узлы очень загружены, репликация данных с другого узла также может не произойти, поэтому запрос также не будет выполнен. Или репликация добавит дополнительные накладные расходы, что значительно усугубит ситуацию.
Вам нужно переосмыслить свой подход — обычно вам нужно отделить узлы приложения от узлов базы данных, чтобы процессы приложения не влияли на процессы базы данных.