Вопрос с собеседования · System design

В каких состояниях бывает circuit breaker и как он между ними переходит?

MiddleНадёжность и идемпотентность
Ещё спрашивают так:
  • Как работает circuit breaker?
  • Зачем полуоткрытое состояние?
Коротко

Закрыт — вызовы идут, ошибки считаются; порог превышен — открыт: вызовы сразу отклоняются; после паузы — полуоткрыт: несколько пробных вызовов решают, закрыться или снова открыться.

  • Смысл — не держать потоки на заведомо упавшей зависимости и дать ей восстановиться
  • Полуоткрытое состояние не обрушивает едва поднявшийся сервис полным трафиком
  • Порог — по доле ошибок в окне с минимальным числом вызовов, медленные вызовы тоже считаются

А ещё Вместе с таймаутами, bulkhead и запасным ответом

Подробно

Смысл предохранителя в том, чтобы перестать долбить упавшую зависимость: вместо тысяч запросов, висящих на таймаутах и удерживающих потоки, вызовы отклоняются мгновенно, а вызывающий получает быстрый отказ или заранее подготовленную деградацию. Полуоткрытое состояние — важная деталь: после паузы пропускается ограниченное число пробных запросов, и полный трафик возвращается только при их успехе, иначе едва поднявшийся сервис снова упал бы под нагрузкой. При настройке важно, чтобы порог считался по доле ошибок на достаточном объёме вызовов, а не по абсолютному числу, иначе на малом трафике предохранитель будет срабатывать случайно. И обязательно продумывают поведение при открытом состоянии — заглушка, устаревшие данные из кэша или явная ошибка.

Что хотят услышать

  • Три состояния и переходы между ними.
  • Зачем нужен: быстрый отказ и защита ресурсов.
  • Роль полуоткрытого состояния и настройка порога.

Частые ошибки

  • Открывать предохранитель по абсолютному числу ошибок без учёта объёма.
  • Не предусмотреть поведение приложения при открытом предохранителе.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Открыт и закрыт — всего два состояния, промежуточного нет
  • ✓Закрыт → открыт при превышении порога ошибок → полуоткрыт после таймаута → закрыт или открыт
  • ✗Активен, приостановлен и выключен; переключает оператор по метрикам
  • ✗Состояний нет, он просто ограничивает частоту запросов

Что спросят дальше

  • Как выбрать порог и длительность паузы?
  • Как предохранитель сочетается с повторами и таймаутами?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования