Вопрос проверяет понимание отказоустойчивости распределённых систем и типовых архитектурных ошибок.
Каскадные отказы возникают, когда сбой одного сервиса начинает блокировать или перегружать другие. Чаще всего причина — отсутствие таймаутов, ограничений ресурсов и механизмов изоляции. Ошибки быстро распространяются по цепочке зависимостей. В результате падает вся система, а не один компонент.
Каскадный отказ — это ситуация, при которой локальная проблема превращается в системный сбой.
На практике каскадные отказы чаще всего вызываются следующими факторами:
Отсутствие таймаутов
запросы зависают
потоки не освобождаются
очередь запросов растёт
Синхронные цепочки вызовов
сервис ждёт ответа от другого сервиса
задержка передаётся дальше
растёт общее время отклика
Общие ресурсы
один пул соединений
один thread pool
одна база данных
Когда сервис замедляется:
клиенты начинают дольше ждать
количество одновременных запросов растёт
нагрузка усиливается сама по себе
Даже кратковременный сбой может привести к длительной деградации.
Частые ошибки:
отсутствие circuit breaker
отсутствие rate limiting
отсутствие fallback-логики
Без изоляции сбой одного сервиса напрямую влияет на остальные.
Каскадные отказы возникают из-за отсутствия защитных механизмов и изоляции. Основная задача архитектора — не допустить распространения сбоя за пределы одного компонента.