Для такого рода информации лучше заглянуть в руководство по архитектуре .
Существует несколько мест, которые можно рассматривать как своего рода балансировщики нагрузки.Первое - вы можете отправлять запросы на любой узел в кластере, и этот узел будет работать как «координатор», повторно отправляя запрос узлам, которые фактически владеют данными.Поскольку это не очень оптимально, драйверы предоставляют так называемую политику балансировки нагрузки, учитывающую токены, в которой драйвер может определить из данных, какие узлы отвечают за их обработку, и отправить запрос одному из узлов, выбранных на основе другой информации.(предоставляется другими политиками балансировки нагрузки).
В случае нескольких центров обработки данных драйверы и сама Cassandra могут отправлять запросы на «удаленные» контроллеры домена, если «локальный» недоступен (понятие удаленногои местные специфичны для потребителей).Но в этом случае некоторые другие факторы будут играть свою роль - например, если у вас есть LOCAL_
уровни согласованности, то ваши запросы не будут отправляться в «удаленный» центр обработки данных.
Говоря о разработке приложений- вы можете использовать балансировщик нагрузки перед своим прикладным уровнем, который будет подключаться к кластеру Cassandra в их «локальном» центре обработки данных, и использовать уровни согласованности LOCAL_
для выполнения своих операций.В случае простоя одного из контроллеров домена балансировщик нагрузки должен прекратить отправку трафика на уровень приложений в этом контроллере домена.