Gateway определяет целевой сервис по маршруту, получает из discovery список готовых экземпляров и выбирает один балансировщиком. Discovery сообщает адреса, но сам не обязан распределять запросы.
Алгоритм выбора инстанса для входящего запроса
Gateway определяет целевой сервис по маршруту, получает из discovery список готовых экземпляров и выбирает один балансировщиком. Discovery сообщает адреса, но сам не обязан распределять запросы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Масштабируемая система:
- webApp — клиентское приложение
- GW, SD — модуль, объединяющий функции API‑шлюза и сервис‑дискавери
- несколько реплик users‑api
- единая база данных
Необходимо описать процесс, которым GW, SD (Gateway + Service Discovery) принимает входящий запрос и определяет, к какому из экземпляров users‑api его перенаправить.
Ответ
Gateway определяет целевой сервис по маршруту, получает из discovery список готовых экземпляров и выбирает один балансировщиком. Discovery сообщает адреса, но сам не обязан распределять запросы.
Далее шлюз устанавливает соединение с выбранной репликой, передаёт запрос и ждёт ответ в пределах deadline. Список экземпляров обычно кешируется и обновляется по изменениям регистрации/здоровья. Round-robin подходит для сходных запросов, least-requests учитывает текущие активные запросы, weights — разную мощность реплик. Неудачная отправка может привести к ограниченному retry только с учётом идемпотентности. Общая БД требует собственного контроля ёмкости и не участвует напрямую в выборе экземпляра.