Существуют разные виды балансировки в зависимости от логики приложения. Но это не значит, что нам с тобой нужно использовать все. Наоборот, чаще всего прибегают к более стандартному варианту, так как его проще настраивать и поддерживать.
А бывает, используют комбинацию. Например, если требуется раскидывать запрос на какой-то инстанс (просмотр фильма), но также учитывать загрузку сервера.
В нашем случае мы ограничимся round robin.
Обычно это метод по умолчанию для балансировки нагрузки, при котором веб-серверы выбираются так: ты назначаешь запросы каждому веб-серверу по очереди, а после прохождения всего списка снова возвращаешься к первому серверу.
Плюсы:
- Простота настройки.
- Эффективность при одинаковых ресурсах серверов: отлично подходит, когда все машины одинаковые по ресурсам и запросы занимают одинаковое время на ответ.
Минусы:
- Это статический способ балансировки. Когда трафик распределяется между серверами, решение о выборе сервера принимается на основе заранее заданных неизменных (статических) правил.
Но правила не учитывают текущее состояние серверов (их загрузку CPU, память, количество активных соединений, время отклика). Например, различия в мощностях серверов: некоторые машины могут быть более мощными и способны обрабатывать больше запросов, но Round Robin этого не учитывает и равномерно распределяет запросы на все сервера. Это может вызвать ряд проблем — если у нас будет наплыв клиентов, какой-то сервер может не выдержать нагрузки.
- Проблема с планированием: Round Robin не учитывает, сколько времени требуется для обработки запроса. Если следующий в очереди сервер уже занят ресурсоёмким запросом, он всё равно получит ещё одну задачу, а это может привести к неравномерной загрузке.