Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Какие способы балансировки нагрузки существуют?

Вопрос проверяет знание стратегий распределения трафика и их влияния на задержки и устойчивость.

Короткий ответ

Есть стратегии round-robin, least connections, weighted варианты, а также распределение по хешу (например, по IP или ключу). Выбор зависит от характера нагрузки и того, насколько инстансы одинаковые. Для stateful-сервисов иногда применяют sticky sessions. Важно сочетать стратегию с health checks.

Длинный ответ

Стратегия балансировки определяет, как именно выбирается инстанс для конкретного запроса или соединения. Правильный выбор уменьшает задержки, повышает равномерность нагрузки и снижает вероятность перегрузки отдельных узлов.

Базовые стратегии

1. Round-robin

Суть:

  1. Запросы распределяются по кругу между инстансами.

  2. Предполагается, что инстансы примерно одинаковые.

Плюсы:

  1. Простота.

  2. Предсказуемость.

Минусы:

  1. Плохо учитывает разную «тяжесть» запросов.

  2. Может перегрузить узел при неравномерной нагрузке.

2. Weighted round-robin

Суть:

  1. Каждому инстансу задается вес.

  2. Более мощные узлы получают больше запросов.

Применение:

  1. Разное железо.

  2. Постепенный ввод новых инстансов.

3. Least connections

Суть:

  1. Выбирается инстанс с минимальным числом активных соединений.

Плюсы:

  1. Хорошо работает при длительных соединениях.

  2. Часто эффективнее round-robin для mixed-нагрузки.

Минусы:

  1. Количество соединений не всегда отражает реальную нагрузку CPU/IO.

4. Least response time

Суть:

  1. Выбирается инстанс с наименьшей наблюдаемой задержкой.

  2. Может учитывать нагрузку косвенно.

Плюсы:

  1. Часто уменьшает p95/p99 latency.

Минусы:

  1. Требует измерений и аккуратной настройки.

Стратегии на основе хеширования

5. IP hashing

Суть:

  1. Выбор инстанса зависит от IP клиента.

  2. Клиент стабильно попадает на один узел.

Это похоже на sticky sessions, но на уровне балансировщика.

Минусы:

  1. NAT и прокси ломают равномерность.

  2. При изменении пула инстансов «перетасовывает» клиентов.

6. Consistent hashing

Суть:

  1. Инстансы размещаются на «кольце».

  2. Ключ запроса (например, userID) маппится на ближайший узел.

Плюсы:

  1. При изменении числа инстансов перераспределяется только часть ключей.

  2. Подходит для кэшей и stateful-данных.

Минусы:

  1. Сложнее.

  2. Нужны правильные ключи и распределение.

Комбинации и дополнительные механизмы

Health checks + outlier detection

Даже лучшая стратегия бесполезна, если:

  1. Балансировщик не умеет исключать «плохие» узлы.

  2. Нет корректной readiness-проверки.

Circuit breaker на уровне клиента

Иногда балансировка частично делается клиентом:

  1. Клиент держит список адресов.

  2. Исключает проблемные узлы.

  3. Выбирает следующий.

Это часто встречается в service discovery и RPC.

Как выбирать стратегию

Практический выбор обычно такой:

  1. Простые stateless HTTP — round-robin или weighted.

  2. Длинные соединения — least connections.

  3. Кэш/шардирование по ключу — consistent hashing.

  4. Разное железо — weighted стратегии.

Вывод

Существует много стратегий балансировки, и выбор зависит от природы нагрузки, длительности соединений, однородности инстансов и необходимости «стабильного маршрута» по ключу. Почти всегда стратегия должна работать вместе с health checks и корректными таймаутами.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Networks

Ключевые слова

#round

#robin

#least

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.