☀Объяснение:
Проблема:
При синхронном вызове к нестабильному внешнему сервису каждый запрос ждёт таймаута (например, 30 секунд). Если таких запросов много, потоки приложения исчерпываются, и система перестаёт отвечать даже на свои внутренние запросы. Экспоненциальный ретрай (A) помогает при временных сбоях, но не защищает от длительной недоступности – ретраи всё равно будут исчерпывать ресурсы.
Что делает Circuit Breaker:
Замкнут (closed) – вызовы идут к внешнему сервису. Счётчик ошибок увеличивается.
Разомкнут (open) – при превышении порога ошибок (например, 5 ошибок за 10 секунд) все вызовы мгновенно возвращают fallback (кэш, сообщение об ошибке) без реального запроса к сервису. Это даёт сервису время на восстановление.
Полуоткрыт (half-open) – через заданное время (например, 30 секунд) пропускается один пробный вызов. Если успех – предохранитель замыкается, если ошибка – снова размыкается.
Реальный пример:
В Netflix, Hystrix (библиотека Circuit Breaker) используется для защиты от падения зависимых сервисов. Если сервис рекомендаций падает, предохранитель размыкается, и пользователь видит заглушку, а не бесконечную загрузку.
Что должен зафиксировать аналитик:
Порог ошибок (например, 5 ошибок за 10 секунд).
Таймаут открытого состояния (например, 30 секунд).
Fallback-стратегия (кэш, сообщение, пустой результат).
Вывод: Circuit Breaker обязателен для всех интеграций с внешними сервисами, чтобы избежать каскадных отказов.
Post #12135
423
- ❤ 1