Decorrelated Jitter
Resilience Patterns

Meaning

Decorrelated jitter is a technique for calculating a retry delay that adds randomness to exponential backoff, breaking up synchronized retry storms. It addresses the thundering herd problem where many clients retry simultaneously, overwhelming a service. The method is used whenever a request fails and the client must wait before attempting again.

Primary Function

Backoff algorithm

Communicative Purpose

Prevents synchronized retries that cause thundering herd effects in distributed systems.

Pattern

determine base interval → apply decorrelated jitter → schedule retry

Core Structure

delay = random(0, base * 2**attempt)

Função primária

Backoff algorithm

Propósito comunicativo

Prevents synchronized retries that cause thundering herd effects in distributed systems.

Situações de gatilho

Microservices: a service call fails due to temporary overload Client libraries: network request times out and needs a retry Cloud APIs: rate limit exceeded and subsequent calls must be delayed

Contextos

Distributed systems, microservice architectures, cloud SDKs, client‑side networking libraries, database connection pools.

Padrão

determine base interval → apply decorrelated jitter → schedule retry

Estrutura central

delay = random(0, base * 2**attempt)

Colocados típicos

  • exponential backoff
  • jitter
  • retry
  • sleep
  • timeout

Substituições comuns

  • Full jitter (uses max interval
  • simpler) – less variance
  • Equal jitter (midpoint between min and max) – balanced
  • Simple exponential backoff (no jitter) – can cause synchronization.

Erros comuns

Using a fixed seed for the random generator → produces repeatable patterns and defeats jitter purpose. Omitting the exponential factor and using only base * random() → insufficient spread for higher retry counts. Capping the delay too low → retries may still collide under high load.

Similar / contraste

Full jitter: always picks the maximum backoff value, whereas decorrelated jitter picks a random value up to that maximum. Equal jitter: picks a value between half and the full backoff, offering less variance than decorrelated jitter. Simple exponential backoff: no randomness, leading to synchronized retries.

Interferências

Coming from JavaScript: using Math.random() without a cryptographic source may produce predictable patterns – consider using secrets.randbits() in Python for security‑sensitive backoff.

Família do chunk

  • Exponential backoff
  • Full jitter
  • Equal jitter
  • Randomized retry

Nuance

Do not use decorrelated jitter when deterministic timing is required, such as in real‑time control loops. The added randomness has negligible CPU overhead but can slightly increase average latency compared to pure exponential backoff. Ensure the calculated delay does not exceed application‑level timeout limits, otherwise retries may be abandoned.

Efeito pragmático

Applying decorrelated jitter reduces the likelihood of service overload spikes, improving overall system stability and request success rates under failure conditions.

Dica de memória

Think of a crowd leaving a stadium: if everyone exits at the same interval they jam the doors, but if each person pauses a random amount, the flow smooths out.

Nota

The decorrelated jitter algorithm was popularized by AWS in their retry guidelines for SDKs.

Upgrade path

Full jitter backoff algorithm (random(0, base * 2**attempt) with max cap) for tighter latency bounds.

Frequência: HighFormulaicidade: FixedTipo de construção: conceptPrioridade de aquisição: Recognition firstPrioridade de output: InputTag de espaçamento: Medium-term

Log in to save chunks.