Как предотвратить каскадное падение микросервисов (cascading failures) в распределенной системе, если один из сервисов в цепочке неожиданно начал сильно тормозить под нагрузкой?

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

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

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

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

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

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

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

Передавайте общий deadline вниз по вызовам и прекращайте бессмысленную работу после отмены. Ретраи ограничивайте бюджетом, используйте задержку с jitter и выполняйте только безопасные повторы. Изолируйте ресурсы разных зависимостей через bulkheads, отбрасывайте лишнюю нагрузку заранее. Fallback должен оставаться корректным для бизнеса, а не возвращать случайно устаревший результат. Наблюдайте хвост задержек, ошибки и насыщение пулов, проверяя поведение при реальном замедлении.

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

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

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

Подробнее