Назад | Перейти на главную страницу

Можно ли загружать запросы балансировки из одного источника?

В нашем приложении сервер A устанавливает TCP-соединение с сервером B, а затем отправляет большое количество запросов серверу B через TCP-соединение. Сообщение запроса основано на XML. Сервер B должен ответить в течение очень короткого периода времени, и для обработки запросов требуется время. Поэтому мы надеемся, что можно будет ввести балансировщик нагрузки и ускорить обработку, используя несколько серверов B. Это не веб-приложение. Я провел небольшое исследование, но не смог найти аналогичного приложения балансировщика нагрузки.

Может ли кто-нибудь сказать мне, может ли в нашем приложении помочь балансировщик нагрузки?

Схема, иллюстрирующая наше приложение:

Хорошо, поправьте меня, если я ошибаюсь, но у вас сейчас такая ситуация:

И вот что вы предлагаете:

Это поможет, только если узкое место внутри B. Если узкое место находится между B и A, это только усугубит ситуацию.

Если узкое место находится внутри B, то добавление LB воля увеличивают накладные расходы на переключение туда и обратно, но при этом нагрузка распределяется между двумя серверами довольно равномерно.

Нет. Балансировщики нагрузки работают, перемещая соединения с одного сервера на другой. Соединение должно быть отключено, а затем отправить следующий запрос, или просто сделать 100 подключений, а затем отправить один запрос по каждому подключению. Поскольку все происходит через одно соединение, вы в значительной степени защищены без каких-либо изменений.

При условии, что каждый запрос является новым TCP-соединением (и запрашиваемые данные относительно статичны), это может быть сбалансировано с помощью чего-то вроде Виртуальный сервер Linux. Однако, если вы можете изменить приложение, почему бы вместо этого не встроить балансировку нагрузки?