Pular para o conteúdo

Arquitetura de software · Confiabilidade e segurança · 5 min de leitura

Idempotência, retries e backoff

Redes falham: repetir uma requisição é necessário, mas só é seguro se a operação puder ser repetida sem efeito duplicado.

Cliente → API: tentativa 1, 2, 3…tentativa 1, 2, 3…API → RegistroAPI → Pagamento: só na 1ªsó na 1ªCliente — Idempotency-KeyClienteIdempotency-KeyAPI — confere a chaveAPIconfere a chaveRegistro — chave → respostaRegistrochave → respostaPagamento — executa 1 vezPagamentoexecuta 1 vez

Arraste para o lado para ver o diagrama inteiro.

Se a mesma chave chega de novo, a API devolve a resposta guardada em vez de cobrar outra vez.

Idempotência

Uma operação é idempotente quando repeti-la produz o mesmo efeito que fazê-la uma vez. GET, PUT e DELETE devem ser; POST (como “criar pagamento”) precisa de uma chave de idempotência enviada pelo cliente e guardada pelo servidor.

Retries com backoff e jitter

  • Repita só erros temporários (timeout, 503, 429).
  • Espere cada vez mais entre tentativas (backoff exponencial) com um componente aleatório (jitter) para os clientes não voltarem todos juntos.
  • Defina um número máximo de tentativas e um tempo total.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →