Назад к вопросам
СБЕР
Senior
7
Circuit Breaker: реализации и состояния алгоритма.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Circuit Breaker — паттерн для повышения устойчивости распределённых систем, предотвращающий повторные вызовы к неработающему сервису.
Основные состояния:
- Closed (Закрытое) — все запросы проходят как обычно.
- Open (Открытое) — запросы блокируются сразу, чтобы не нагружать неработающий сервис.
- 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");
Такой подход помогает избежать каскадных сбоев и улучшить стабильность системы.