Этап 12 из 15 · ≈ 8 ч

Надёжность

Основа с Middle

Таймауты, повторы, circuit breaker, идемпотентность, деградация и отказоустойчивость.

Что важно знать

  • Таймаут на каждом внешнем вызове, согласованный по цепочке.
  • Повторы с экспоненциальной паузой и jitter — только идемпотентных операций; иначе — шторм повторов.
  • Circuit breaker перестаёт звать сломанную зависимость.
  • Bulkhead — отдельные пулы, чтобы одна зависимость не съела все потоки.
  • Деградация: отключить второстепенное, но сохранить главное.
  • Сброс нагрузки при перегрузке лучше, чем падение всех запросов.

Критерии освоения

Middle ≈ 8 ч

  • Ставит таймауты на все внешние вызовы и делает повторы с паузой только для идемпотентных операций
  • Применяет circuit breaker и изоляцию ресурсов (bulkhead)

Практика. Добавить вызову внешнего сервиса таймаут, повторы с jitter и circuit breaker и проверить поведение при медленной зависимости.

Senior ≈ 6 ч

  • Проектирует деградацию функций и защиту от каскадных отказов
  • Проводит учения по отказам и разбирает инциденты

Практика. Провести учение — отключить зависимость в стенде, проверить деградацию и описать найденные слабые места.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Как правильно настраивать таймауты и повторы запросов?Middle

Таймаут у каждого сетевого вызова — по p99.9 зависимости, а не «по умолчанию». Повторы — только идемпотентных операций, с экспоненциальной отсрочкой и джиттером, ограниченным числом и бюджетом.

Полный разбор
Как сервису пережить нагрузку выше его возможностей?Senior

При перегрузке лучше быстро отказать части запросов, чем медленно обслуживать все: иначе очереди растут, все запросы опаздывают, клиенты повторяют, и пропускная способность падает до нуля.

Полный разбор
Что такое backpressure и как его реализовать?Middle

Backpressure — механизм, которым медленный потребитель заставляет источник замедлиться, вместо того чтобы копить работу без предела.

Полный разбор
Почему у каждого вызова внешнего сервиса должен быть таймаут?Junior

Без ограничения ожидание держит поток и соединение бесконечно: зависшая зависимость занимает все потоки, и ваш сервис перестаёт отвечать — чужая медлительность становится вашим отказом.

Полный разбор
Что необходимо учесть, добавляя автоматические повторы вызова внешнего сервиса?Middle

Повторять только идемпотентное, только временные ошибки (таймаут, 503, 429), с экспоненциальной отсрочкой и джиттером, с лимитом попыток и общего времени. 4xx не повторяют.

Полный разбор
Как подключить circuit breaker к вызову внешнего сервиса в Spring Boot?Senior

Resilience4j — библиотека устойчивости для Spring Boot (Hystrix давно в режиме поддержки и из Spring Cloud удалён). Аннотация @CircuitBreaker(name = "payments", fallbackMethod = "...") на методе вызова, пороги — в application.yml.

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

Разборы темы

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования