Как Cassandra разработана, чтобы избежать необходимости в балансировщиках нагрузки? - PullRequest
0 голосов
/ 18 мая 2018

Я прочитал это из официального документа DSE , но он не углубился в то, как.Может кто-нибудь объяснить или предоставить какие-либо ссылки на то, как?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Для такого рода информации лучше заглянуть в руководство по архитектуре .

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

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

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

0 голосов
/ 18 мая 2018

Балансировщик нагрузки встроен в драйверы / соединения.Например, поведение Java-драйвера "roundrobin" объяснено в документации здесь:

https://docs.datastax.com/en/developer/java-driver-dse/1.6/manual/load_balancing/

Также объяснено здесь:

https://docs.datastax.com/en/developer/java-driver/3.1/manual/load_balancing/

...