CloudCastle Curl

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)

On this page

Search results