Что такое Circuit breaker

«Что такое Circuit breaker» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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

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

Пример на Go с библиотекой sony/gobreaker:

cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{
    Name:    "my-service",
    Timeout: 5 * time.Second,
})

_, err := cb.Execute(func() (interface{}, error) {
    // Вызов внешнего сервиса
    resp, err := http.Get("https://api.example.com")
    return resp, err
})

Основные параметры:

  • FailureThreshold — порог ошибок для перехода в Open
  • SuccessThreshold — успешных запросов для возврата в Closed
  • Timeout — время в Open перед переходом в Half-Open