SYSTEM ATLASЗагрузка материала

Exponential Backoff

Exponential Backoff

Пауза между повторами увеличивается после каждого отказа.

Простыми словами

Стратегия, при которой пауза между повторными попытками растёт, снижая дополнительную нагрузку на нестабильный сервис. Например, после временной ошибки клиент повторяет запрос через 1, 2, 4 и 8 секунд, а не мгновенно. Это даёт зависимому сервису время восстановиться. Поэтому заранее определяют границы ожидания и поведение при отказе - иначе один медленный компонент начинает удерживать ресурсы и распространять проблему дальше.

Пример от @Vibeclakr

Пример при разработке

После временной ошибки клиент повторяет запрос через 1, 2, 4 и 8 секунд, а не мгновенно. Это даёт зависимому сервису время восстановиться.

Это редакционный пример применения, а не часть определения или доказательство концепции.

Механизм действия

Сначала проверяют, есть ли исходное условие из определения. Затем смотрят, как оно влияет на структуру компонентов, потоки данных, ограничения и действия участников. Если эту связь не удаётся наблюдать, принцип не стоит использовать как готовое объяснение.

Пример в работе

Нерабочий подход

Решение принимают без учета механизма «Exponential Backoff», оценивая только ближайший эффект.

Системный подход

Перед изменением проверяют, как «Exponential Backoff» влияет на ограничения, стимулы, зависимости и вторичные последствия.

Ограничения

«Exponential Backoff» объясняет только часть происходящего в области «Надежность и SRE». Сам принцип не говорит, насколько сильным будет эффект в вашем случае, и не заменяет измерения. При другом масштабе, среде или временном горизонте результат может отличаться.

Источник

Marc Brooker. Timeouts, retries, and backoff with jitter. 2019.

Первоисточник