TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Записки тимлида | Александр Пенкин

15 Sep, 11:45

Открыть в Telegram Поделиться Пожаловаться

Circuit Breaker: когда системе пора перестать пытаться

Recommendation Service лежит.

Но каждый пользовательский запрос всё равно пытается получить рекомендации:

— отправляет запрос; 
— ждёт timeout; 
— делает retry; 
— снова ждёт.

Пользователь тем временем смотрит на spinner и размышляет, у какого конкурента каталог работает быстрее.

Retry полезен, когда сбой кратковременный. Но если сервис действительно недоступен, повторные попытки только увеличивают задержку и создают дополнительную нагрузку.

В этот момент нужен Circuit Breaker — автоматический выключатель между системой и проблемной зависимостью.

У него три состояния.

Closed

Всё работает нормально. Запросы отправляются в Recommendation Service, а Circuit Breaker следит за ошибками и задержками.

Единичный timeout ничего не меняет: сбои случаются. Но если ошибок становится слишком много, выключатель переходит в следующее состояние.

Open

Запросы в Recommendation Service временно не отправляются вообще.

Система не ждёт заведомый timeout и не запускает бессмысленные retry. Она сразу возвращает fallback или продолжает работу без рекомендаций.

Это важно не только для пользователя. Упавший сервис получает время на восстановление, а не новую волну запросов от клиентов, которые очень настойчиво проверяют, не стало ли ему лучше.

Half-open

Через некоторое время Circuit Breaker пропускает несколько пробных запросов.

Если они проходят успешно, соединение возвращается в состояние Closed. Если снова падают — выключатель открывается ещё на один период.

Получается простой цикл:

Closed → ошибок стало слишком много → Open → прошло время → Half-open → сервис восстановился или снова Open.

Но самое интересное здесь не сам паттерн.

Допустим, рекомендации недоступны. Действительно ли из-за этого должен перестать работать весь магазин?

Вместо бесконечного spinner можно:

— скрыть блок рекомендаций; 
— показать популярные товары; 
— использовать последние успешно рассчитанные данные; 
— дать пользователю продолжить покупку без персонализации.

Circuit Breaker отвечает на вопрос: когда перестать обращаться к сломанной зависимости.

А архитектура системы должна ответить на следующий: что делать без неё.

Это уже graceful degradation — способность системы терять часть функций, но сохранять основную ценность для пользователя.

Какая необязательная зависимость у вас сегодня способна положить весь пользовательский сценарий?

42 0 1 2
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot