Sobes.tech
Назад к вопросам
Senior
7

Circuit Breaker: реализации и состояния алгоритма.

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Circuit Breaker — паттерн для повышения устойчивости распределённых систем, предотвращающий повторные вызовы к неработающему сервису.

Основные состояния:

  1. Closed (Закрытое) — все запросы проходят как обычно.
  2. Open (Открытое) — запросы блокируются сразу, чтобы не нагружать неработающий сервис.
  3. Half-Open (Полуоткрытое) — после таймаута пробуется отправить ограниченное число запросов для проверки восстановления сервиса.

Принцип работы:

  • При превышении порога ошибок (например, 5 неудачных вызовов подряд) переключается в Open.
  • Через заданный таймаут переходит в Half-Open и пробует запросы.
  • Если запросы успешны — возвращается в Closed, иначе снова в Open.

Реализации в Java:

  • Библиотека Resilience4j — современная, легковесная, поддерживает Circuit Breaker, Rate Limiter и др.
  • Netflix Hystrix — популярная, но устаревающая.

Пример использования Resilience4j CircuitBreaker:

CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("myCircuitBreaker");
Supplier<String> decoratedSupplier = CircuitBreaker
    .decorateSupplier(circuitBreaker, () -> remoteService.call());

Try<String> result = Try.ofSupplier(decoratedSupplier)
    .recover(throwable -> "Fallback response");

Такой подход помогает избежать каскадных сбоев и улучшить стабильность системы.