Какие знаешь состояния Cirquit Breaker

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

Ответ

Состояния Circuit Breaker:

  1. Closed - нормальная работа, запросы проходят. При превышении ошибок переходит в Open.
  2. Open - все запросы сразу отклоняются. Через таймаут переходит в Half-Open.
  3. Half-Open - пробует пропустить часть запросов. При успехе - Closed, при ошибках - Open.

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

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

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