Поставьте перед users-api балансировщик с единым адресом, на который будет обращаться webApp. Он выбирает доступную реплику по round-robin, least-connections или другому алгоритму.
Организация распределения запросов к нескольким экземплярам users‑api
Поставьте перед users-api балансировщик с единым адресом, на который будет обращаться webApp. Он выбирает доступную реплику по round-robin, least-connections или другому алгоритму.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В системе развёрнуты несколько инстансов сервиса users‑api, однако веб‑приложение всё ещё направляет запросы напрямую к одному из них. Требуется спроектировать механизм маршрутизации запросов от webApp ко всем доступным экземплярам users‑api, чтобы обеспечить равномерное распределение нагрузки и повысить отказоустойчивость.
Ответ
Поставьте перед users-api балансировщик с единым адресом, на который будет обращаться webApp. Он выбирает доступную реплику по round-robin, least-connections или другому алгоритму.
Список реплик поддерживает service discovery или конфигурация оркестратора; readiness/health-check исключает неготовые экземпляры. Сам балансировщик также не должен оставаться единственной точкой отказа. Для равномерной обработки API лучше не хранить сессию пользователя только в памяти одной реплики. Нужны timeouts, ограниченные retries и защита повторных изменяющих запросов. Общая БД остаётся отдельным ограничением: рост числа API-процессов не увеличивает её пропускную способность автоматически.