Паттерн Circuit Breaker — Когда сервис упал, а ты просто перестал его вызывать.
Это паттерн, который защищает систему от каскадных сбоев, автоматически отключая вызовы неработающего сервиса — как электрический предохранитель.
Как работает?
Три состояния:
CLOSED (Закрыт) — нормальная работа
→ Вызовы идут к сервису
→ Считаем ошибки
OPEN (Открыт) — сервис упал
→ Блокируем все вызовы (не мучаем упавший сервис)
→ Возвращаем ошибку или fallback
→ Ждём 30-60 секунд
HALF-OPEN (Полуоткрыт) — проверка
→ Пробуем один вызов
→ Успех → CLOSED
→ Ошибка → OPEN (снова ждём)
Зачем нужен?
✅ Защищает от каскадных сбое
Один сервис упал → не тянет за собой всю систему
✅ Экономит ресурсы
Не тратим время на таймауты и повторные вызовы
✅ Даёт время на восстановление
Сервис может перезагрузиться без нагрузки
✅ Graceful degradation
Показываем кэш или заглушку вместо ошибки
Пример из жизни:
Без Circuit Breaker:
Платёжный сервис упал → 1000 запросов в секунду получают timeout →
База данных перегружена → Весь сайт лёг
С Circuit Breaker:
Платёжный сервис упал → После 5 ошибок сработал выключатель →
Показываем «Оплата временно недоступна» →
Через 30 секунд пробуем снова → Всё работает
Это паттерн, который защищает систему от каскадных сбоев, автоматически отключая вызовы неработающего сервиса — как электрический предохранитель.
Как работает?
Три состояния:
CLOSED (Закрыт) — нормальная работа
→ Вызовы идут к сервису
→ Считаем ошибки
OPEN (Открыт) — сервис упал
→ Блокируем все вызовы (не мучаем упавший сервис)
→ Возвращаем ошибку или fallback
→ Ждём 30-60 секунд
HALF-OPEN (Полуоткрыт) — проверка
→ Пробуем один вызов
→ Успех → CLOSED
→ Ошибка → OPEN (снова ждём)
Зачем нужен?
✅ Защищает от каскадных сбое
Один сервис упал → не тянет за собой всю систему
✅ Экономит ресурсы
Не тратим время на таймауты и повторные вызовы
✅ Даёт время на восстановление
Сервис может перезагрузиться без нагрузки
✅ Graceful degradation
Показываем кэш или заглушку вместо ошибки
Пример из жизни:
Без Circuit Breaker:
Платёжный сервис упал → 1000 запросов в секунду получают timeout →
База данных перегружена → Весь сайт лёг
С Circuit Breaker:
Платёжный сервис упал → После 5 ошибок сработал выключатель →
Показываем «Оплата временно недоступна» →
Через 30 секунд пробуем снова → Всё работает