Backoff
in package
FinalYes
Экспоненциальная задержка между повторами с необязательным джиттером.
Задержка для попытки n (начиная с 1) равна
min(maxDelay, baseDelay * multiplier^(n-1)), к которой при включённом
джиттере добавляется случайная доля до 100 % — это размывает синхронные
повторы множества клиентов («громовое стадо»).
Table of Contents
Methods
- __construct() : mixed
- delayFor() : float
- Вычислить задержку перед повтором.
Methods
__construct()
public
__construct([float $baseDelay = 0.1 ][, float $multiplier = 2.0 ][, float $maxDelay = 10.0 ][, bool $jitter = true ]) : mixed
Parameters
- $baseDelay : float = 0.1
-
базовая задержка первой попытки в секундах
- $multiplier : float = 2.0
-
множитель роста задержки
- $maxDelay : float = 10.0
-
верхний предел задержки в секундах
- $jitter : bool = true
-
добавлять ли случайный джиттер
delayFor()
Вычислить задержку перед повтором.
public
delayFor(int $attempt[, float $randomFraction = -1.0 ]) : float
Parameters
- $attempt : int
-
номер завершившейся попытки (>= 1)
- $randomFraction : float = -1.0
-
доля джиттера в диапазоне [0, 1) для детерминизма в тестах
Return values
float —задержка в секундах (>= 0)