Exponential backoff увеличивает паузу между повторами, а jitter добавляет случайность, чтобы множество клиентов не повторяли запрос одновременно. Нужны также общий deadline и ограничение попыток.
Что такое экспоненциальная задержка (Exponential Backoff) и джиттер (Jitter) при проектировании повторных попыток (retries) запросов к нестабильным внешним сервисам?
Exponential backoff увеличивает паузу между повторами, а jitter добавляет случайность, чтобы множество клиентов не повторяли запрос одновременно. Нужны также общий deadline и ограничение попыток.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Exponential backoff увеличивает паузу между повторами, а jitter добавляет случайность, чтобы множество клиентов не повторяли запрос одновременно. Нужны также общий deadline и ограничение попыток.
Пример схемы: верхняя граница задержки растёт как min(cap, base * 2**attempt), а фактическая пауза выбирается случайно внутри неё. Это снижает синхронные волны нагрузки после отказа. Учитывайте Retry-After, если его возвращает сервис. Повторяют только подходящие временные ошибки и безопасные или идемпотентные операции. Слишком много независимых retry-слоёв может умножить число запросов, поэтому бюджет повторов согласуют между компонентами.