База по алгоритмам балансировки

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

А бывает, используют комбинацию. Например, если требуется раскидывать запрос на какой-то инстанс (просмотр фильма), но также учитывать загрузку сервера.

В нашем случае мы ограничимся round robin.

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

Плюсы:

  • Простота настройки.
  • Эффективность при одинаковых ресурсах серверов: отлично подходит, когда все машины одинаковые по ресурсам и запросы занимают одинаковое время на ответ.

Минусы:

  • Это статический способ балансировки. Когда трафик распределяется между серверами, решение о выборе сервера принимается на основе заранее заданных неизменных (статических) правил. 

Но правила не учитывают текущее состояние серверов (их загрузку CPU, память, количество активных соединений, время отклика). Например, различия в мощностях серверов: некоторые машины могут быть более мощными и способны обрабатывать больше запросов, но Round Robin этого не учитывает и равномерно распределяет запросы на все сервера. Это может вызвать ряд проблем — если у нас будет наплыв клиентов, какой-то сервер может не выдержать нагрузки.

  • Проблема с планированием: Round Robin не учитывает, сколько времени требуется для обработки запроса. Если следующий в очереди сервер уже занят ресурсоёмким запросом, он всё равно получит ещё одну задачу, а это может привести к неравномерной загрузке.