Что такое circuit breaker?

Middle+
790 просмотров
AFK Offer AI

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

Три состояния:

  • Closed: всё работает, запросы идут
  • Open: слишком много ошибок — запросы сразу возвращают ошибку без вызова сервиса
  • Half-Open: пробуем один запрос — если успешный, переходим в Closed
В Go популярная библиотека — sony/gobreaker:
cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{
    MaxRequests: 3,
    Timeout:     10 * time.Second,
})
result, err := cb.Execute(func() (any, error) {
    return http.Get("http://external-service/api")
})

Обязательен для микросервисов, где каскадные падения — реальная проблема.

Следующий вопрос

Что такое pub/sub?