Короткий ответ Timeout ограничивает, сколько вы готовы ждать один вызов; retry повторяет вызов при временном сбое (обычно с экспоненциальной задержкой); circuit breaker временно прекращает попытки вызова сервиса, который стабильно отказывает, чтобы не тратить ресурсы и не усугублять его перегрузку. Как это работает подробнее эти три механизма решают разные проблемы и обычно применяются вместе: timeout защищает от бесконечного ожидания одного вызова, retry сглаживает кратковременные сетевые сбои, circuit breaker защищает систему от продолжительной недоступности зависимости, переводя вызовы в "открытое" состояние (быстрый отказ без реального запроса) на время восстановления. Пример кода Что использовать на практике Рекомендация. retry стоит применять только к идемпотентным операциям или операциям с защитой идемпотентности (см. idempotency key), иначе повтор может продублировать побочный эффект; задержку между попытками стоит увеличивать экспоненциально с джиттером, чтобы не создавать синхронизированный всплеск