Выбор ответа Junior Микросервисы и Spring Cloud спрашивают часто обновлено
Вызов без таймаута
Вопрос
Сервис A синхронно вызывает сервис B без таймаута. B начал отвечать по минуте. Что будет с A?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Потоки A зависнут, пул исчерпается, и A перестанет отвечать. HTTP-клиенты по умолчанию часто ждут очень долго или бесконечно.
Варианты ответа
- A автоматически получит ошибку через 30 секунд по таймауту JDK
- Ничего: проблемы B не влияют на остальные запросы A
- Потоки A зависнут, пул исчерпается, и A перестанет отвечатьправильный ответ
- A сам переключится на кешированные ответы B
Разбор
HTTP-клиенты по умолчанию часто ждут очень долго или бесконечно. Каждый висящий вызов держит поток A, и отказ B каскадом роняет A и тех, кто вызывает A. Отсюда правило: таймауты на каждый внешний вызов, плюс circuit breaker и bulkhead. Автоматического кеша нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.