Балансировка нагрузки в распределенном проекте

Кто-нибудь знает простой алгоритм (формула) балансировки нагрузки, который связывает подключенных пользователей, загрузку процессора, загрузку сети и использование памяти? Это будет использоваться для сравнения различных серверов и назначения новому пользователю лучшего на данный момент. Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
2 020
3

Ответы 3

Если вы используете веб-сервер Apache для прокси серверов приложений, я рекомендую вам использовать mod_proxy и mod_proxy_balancer. Вы можете найти краткое введение в mod_proxy здесь. Речь идет о Jetty, но это легко применимо к другим серверам.

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

Относительно алгоритма балансировки нагрузки см. Документацию mod_proxy_balancer. В соответствии с ним существует 3 алгоритма планировщика балансировщика нагрузки.

Более старое решение для балансировки нагрузки - mod_jk.

В общем, я бы не реализовал это сам, даже если бы у меня был алгоритм получше. Лучше использовать существующее решение.

Взгляните на nginx. Его легко настроить, он очень быстр и выполняет балансировку нагрузки между серверами.

Соответственно, требуется распределенная обработка сеансов (подробности см. В kgiannakakis).

Взгляните на haproxy. Это чрезвычайно стабильный и быстрый балансировщик нагрузки HTTP / TCP, который используется некоторыми веб-сайтами с чрезвычайно высокой посещаемостью.

Соответственно, требуется распределенная обработка сеансов (подробности см. В kgiannakakis).

Другие вопросы по теме