Решение проблемы таймаута при отказе инстанса

Ограничьте время попытки и исключайте нездоровый экземпляр из выбора. Безопасный запрос можно повторить на другом инстансе в пределах общего deadline, но гарантировать успех при любом отказе нельзя.

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

Что ответить на собеседовании

Ограничьте время попытки и исключайте нездоровый экземпляр из выбора. Безопасный запрос можно повторить на другом инстансе в пределах общего deadline, но гарантировать успех при любом отказе нельзя.

Подробный разбор

Ответ с пояснениями

Условие

В схеме взаимодействия:

  • web‑приложение посылает запрос через шлюз + сервис‑дискавери (GW+SD);
  • шлюз перенаправляет запрос к одному из экземпляров users‑api;
  • выбранный экземпляр либо завис, либо не отвечает в отведённое время (таймаут).

Требуется описать подход, позволяющий при сбое отдельного экземпляра обеспечить пользователю корректный ответ, несмотря на возникший таймаут.

Ответ

Ограничьте время попытки и исключайте нездоровый экземпляр из выбора. Безопасный запрос можно повторить на другом инстансе в пределах общего deadline, но гарантировать успех при любом отказе нельзя.

Нужны health checks, балансировка, circuit breaker и ограниченный retry budget с backoff/jitter. Для изменяющей операции повтор допустим только с идемпотентностью: timeout не доказывает, что первый инстанс ничего не сделал. Если запас времени исчерпан, верните контролируемую ошибку или допустимый fallback. Не создавайте retry storm во всех слоях сразу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее