Экспоненциальная задержка

Экспоненциальная задержка (Exponential backoff spaces) позволяет повторять попытки, удваивая задержку каждый раз — 0,5 с, 1 с, 2 с, 4 с — до определенного предела, что дает серверу, испытывающему трудности, время на восстановление. Джиттер (Jitter) рандомизирует каждую задержку, поскольку без него каждый клиент, у которого произошел сбой в один и тот же момент, будет повторять попытку в один и тот же момент, воссоздавая всплеск, вызвавший сбой.

Как это работает

Типичная стратегия: ждать случайное время от нуля до основания × 2^попытка, ограниченное максимальным значением, и сдаваться после фиксированного числа попыток или общего времени. Повторять только то, что безопасно — идемпотентные методы или операции записи, защищенные ключом идемпотентности, — и только при сбоях, которые могут быть временными: тайм-ауты, 429, 502, 503, 504.

Заблуждение

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

Попробуйте здесь.

Настройте API внедрения ошибок с помощью запроса PUT /faults/v1/config — например, установите failureRate равным 0,5 и статус 503 — затем многократно вызывайте GET /faults/v1/target чтобы проверить, как ваша политика повторных попыток справляется с нестабильной зависимостью.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление