Вопрос проверяет, понимаете ли вы, как повторять операции безопасно, не создавая дубликатов и лавинообразной нагрузки.
Retry применяют при временных ошибках и всегда ограничивают по количеству и времени. Используют фиксированную задержку, exponential backoff и jitter. Чтобы избежать повторной обработки, операции делают идемпотентными. Также применяют дедупликацию по ключам и хранение состояния обработки. Без этих мер retry быстро приводит к дубликатам и перегрузке системы.
Retry-стратегия — это политика повторного выполнения операции при ошибке с контролем количества попыток и интервалов между ними.
Fixed delay
Повтор через одинаковый интервал.
Простая, но плохо ведёт себя при пиковых сбоях.
Exponential backoff
Интервал увеличивается с каждой попыткой.
Снижает нагрузку на проблемный сервис.
Backoff с jitter
Добавляется случайное отклонение.
Предотвращает синхронные повторы (thundering herd).
Limited retry
Жёсткий лимит попыток.
После превышения — DLQ или ручная обработка.
Идемпотентность
Повторный вызов не меняет результат.
Ключ операции (idempotency key).
Дедупликация
Хранение обработанных идентификаторов.
Проверка перед выполнением.
Хранение состояния
Фиксация этапов выполнения.
Повтор продолжается с нужного шага.
Retry без идемпотентности опасен; безопасный retry — это backoff + лимиты + контроль повторов.