Ограничьте время ожидания, число параллельных обращений и очередь к медленной зависимости. Добавьте circuit breaker, контролируемые повторы и деградацию, чтобы один сбой не занял все ресурсы цепочки.
Как предотвратить каскадное падение микросервисов (cascading failures) в распределенной системе, если один из сервисов в цепочке неожиданно начал сильно тормозить под нагрузкой?
Ограничьте время ожидания, число параллельных обращений и очередь к медленной зависимости. Добавьте circuit breaker, контролируемые повторы и деградацию, чтобы один сбой не занял все ресурсы цепочки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Ограничьте время ожидания, число параллельных обращений и очередь к медленной зависимости. Добавьте circuit breaker, контролируемые повторы и деградацию, чтобы один сбой не занял все ресурсы цепочки.
Передавайте общий deadline вниз по вызовам и прекращайте бессмысленную работу после отмены. Ретраи ограничивайте бюджетом, используйте задержку с jitter и выполняйте только безопасные повторы. Изолируйте ресурсы разных зависимостей через bulkheads, отбрасывайте лишнюю нагрузку заранее. Fallback должен оставаться корректным для бизнеса, а не возвращать случайно устаревший результат. Наблюдайте хвост задержек, ошибки и насыщение пулов, проверяя поведение при реальном замедлении.