DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on

[Conceito] - Backoff e Jitter

Conteúdo original nessa thread do Twitter


Ei dev,

Quer aprender dois conceitos sensuais pra você ter uma noite bem gostosa e duradoura com seu crush? Já ouviu falar de BACKOFF e JITTER?

Dá até pra aplicar esses conceitos se o negócio estiver indo muito rápido e alguém não estiver dando conta. 😁

cc @sseraphini

uma linda mulher cavalgando


Quando fazemos requisições, alguma coisa pode dar errada. O servidor pode estar muito ocupado, a rede lenta ou até uma pessoa muito ansiosa. :)

Backoff, nesse contexto, significa tentar posteriormente essa mesma requisição.


Já falei um pouco sobre retry (retentativa) na thread abaixo.

(Backoff pode estar relacionado com processamento de mensagens vindas de filas e outras coisas também como chamadas HTTP, por exemplo.)

https://twitter.com/zanfranceschi/status/1522554964534435840


Uma coisa importante sobre backoff é que existem estratégias para definir o intervalo entre as retentativas. O intervalo pode ser linear, mínimo, polinomial, exponencial, aleatório, etc.

Bom, backoff é isso.


Agora, vamos falar sobre jitter. Acabei de mencionar que o intervalo do backoff pode ser aleatório. Pois então, jitter significa aleatório. Bom, na verdade significa irregular, mas pra obtermos irregularidade, usamos aleatoriedade :)


Vamos juntas as peças agora com um exemplo. Imagina se o poupa tempo da Índia (existe isso lá?), falhasse e as milhares de pessoas naquele dia voltassem todas na mesma hora do dia seguinte. Iria entupir os guichês de atendimento no dia seguinte.

img


Aí é que o conceito de jitter poderia ajudar: algumas pessoas deveriam voltar de manhã, outras mais tarde, outras talvez outro dia, etc. O ideal é que a retentativa tenha um intervalo irregular entre as várias requisições que foram contidas.


Claro, estamos falando de sistemas e é mais trivial que as retentativas não tenham um intervalo tão grande assim que chegue a dias. Mas deu pra entender a analogia, né?


Outra parte importante e uma prática comum é que o backoff, além de sua estratégia de intervalo (exponencial, por exemplo), adicione jitter pra evitar aquele "entupimento" que comentei. Claro, o jitter por si só poderia ser uma estratégia de intervalo desde que seja maior que 0.


Vale ressaltar que quem define a estratégia de backoff é quem faz a requisição na maioria dos casos, ok?


Agora você já sabe, se estiver difícil manter as noites duradouras com o crush, você pode solicitar que a outra parte use backoff e jitter para que haja um afastamento temporário e uma nova tentativa. 😁


Preciso nem dizer, né? Dá um abraço aqui por ter lido e dado essa moral (mas vem com calma). 💕

Discussion (0)