dev-tools
Словарь ↗Балансировщик нагрузки (Load Balancer)
Балансировщик нагрузки — это компонент, стоящий перед несколькими экземплярами бэкенд-серверов и распределяющий входящие запросы между ними, так что ни один отдельный сервер не перегружается, а система в целом способна обрабатывать больше трафика, чем мог бы один сервер в одиночку. Помимо простого распределения трафика, балансировщики нагрузки выполняют проверки работоспособности (health checks), автоматически убирая трафик с отказавшего или не отвечающего экземпляра сервера, и являются ключевым фактором, делающим возможным горизонтальное масштабирование и развёртывания без простоя (и blue-green, и rolling-развёртывания опираются на способность балансировщика перемещать трафик между группами серверов). Примеры варьируются от управляемых облачных решений (AWS Application Load Balancer, Google Cloud Load Balancing) до открытых программных балансировщиков (NGINX, HAProxy, Envoy). Почему это важно для AI/SaaS-разработчиков: именно балансировщик нагрузки делает горизонтальное масштабирование реально работающим на практике — вместо попыток заставить один постоянно растущий сервер обрабатывать больше трафика (у этого есть жёсткий физический потолок), вы запускаете несколько меньших, идентичных экземпляров серверов за балансировщиком и добавляете новые экземпляры по мере роста трафика. Это также механизм, придающий системе устойчивость к отказам отдельных серверов: если один экземпляр падает или становится неисправным, проверки работоспособности балансировщика обнаруживают это и прекращают направлять туда трафик, так что пользователи не замечают сбоя, пока остаются работающими другие исправные экземпляры. Как это работает: балансировщик нагрузки первым принимает каждый входящий запрос и решает, какой бэкенд-экземпляр должен его обработать, используя алгоритм распределения — round-robin (равномерный循環 по экземплярам), least-connections (направление на экземпляр с наименьшим числом активных запросов на данный момент) или IP-hash (последовательное направление конкретного клиента на один и тот же экземпляр, полезно для привязки сессии). Балансировщик непрерывно выполняет проверки работоспособности каждого бэкенд-экземпляра (обычно лёгкий HTTP-запрос к эндпоинту `/health`) и автоматически прекращает направлять трафик на любой экземпляр, не прошедший эти проверки, возобновляя его при восстановлении. Разбор примера: SaaS API работает на четырёх идентичных экземплярах бэкенд-сервера за AWS Application Load Balancer. Во время всплеска трафика балансировщик распределяет входящие запросы примерно поровну между всеми четырьмя экземплярами по алгоритму round-robin, удерживая нагрузку на каждом экземпляре управляемой, вместо того чтобы перегружать один сервер. Десять минут спустя на одном экземпляре возникает утечка памяти, и он начинает проваливать проверку работоспособности (`GET /health` перестаёт возвращать `200 OK`); балансировщик обнаруживает это за секунды, автоматически прекращает отправлять на него новый трафик и продолжает бесперебойно обслуживать всех пользователей за счёт оставшихся трёх исправных экземпляров — при этом неисправный экземпляр автоматически заменяется группой автомасштабирования, без какого-либо ручного вмешательства и без заметного клиентам простоя.
Похожие термины