Паттерн circuit breaker защищает сервис от повторных попыток обратиться к отказывающей зависимости. Он работает как механизм изоляции отказов, который предотвращает распространение сбоев по распределённой системе.
Circuit breaker работает через три различных состояния:
Closed → Open: количество ошибок превышает заданный порог
Open → Half-Open: истёк период ожидания
Half-Open → Closed: тестовые запросы успешны
Half-Open → Open: тестовые запросы неудачны
Без circuit breaker медленный или отказывающий сервис вынуждает вышестоящих вызывающих:
Благодаря быстрому отказу и немедленному возврату fallback-ответа, circuit breaker гарантирует, что один деградировавший сервис не приведёт к отказу всей системы.
failureThreshold — количество ошибок перед открытием цепиtimeout — как долго ждать перед попыткой восстановленияsuccessThreshold — количество успешных тестовых вызовов для закрытия цепиПопулярные реализации включают Netflix Hystrix, Resilience4j и встроенную поддержку в Istio service mesh. Частая стратегия fallback'а — возврат кэшированных данных или ответа по умолчанию, пока цепь открыта.
В состоянии Half-Open автоматический выключатель пропускает ограниченное количество тестовых запросов, чтобы проверить, восстановился ли downstream-сервис.
Новый — ещё не проверен сообществом
Вы