Retries ingênuos multiplicam carga exatamente quando um serviço já está sofrendo, e clientes sincronizados repetem em ondas coordenadas. Use backoff exponencial com full jitter, limite o total de tentativas, e só repita operações idempotentes em erros repetíveis. Acrescente um orçamento de retry no cliente para que retries fiquem numa fração pequena do tráfego, mais um circuit breaker para parar as chamadas de vez quando a taxa de falha dispara. Nunca faça retry de forma independente em cada camada da pilha.
Por que os entrevistadores perguntam isso
Tempestades de retry são uma das causas mais comuns de uma falha pequena virar uma queda completa, então essa pergunta separa quem já depurou uma falha em cascata real de quem só configurou uma biblioteca cliente. O entrevistador quer jitter, orçamentos, idempotência e, acima de tudo, o ponto de que retries em camadas multiplicam as tentativas.
Como estruturar sua resposta
- Explique a amplificação: retries acrescentam carga durante a falha.
- Nomeie jitter especificamente, não só backoff exponencial.
- Restrinja retries a operações idempotentes e a códigos de status repetíveis.
- Acrescente um orçamento de retry e um circuit breaker como teto.
- Alerte sobre a multiplicação entre camadas aninhadas.
Exemplo de resposta
O problema é que retries são carga extra aplicada no pior momento possível. Se um serviço está falhando a 50% e cada cliente tenta três vezes, você acabou de triplicar o tráfego batendo em algo que já está acima da capacidade, e ele nunca ganha chance de se recuperar. Backoff exponencial puro também não basta, porque todos os seus clientes falharam no mesmo instante, então todos acordam no mesmo instante. Full jitter resolve isso, então o sleep é um valor aleatório entre zero e o teto atual do backoff. Além disso eu só faria retry de chamadas idempotentes, só em 503, 429 e erros no nível de conexão, nunca num 400, e eu imporia um orçamento de retry para que retries fiquem limitados a algo como 10% do total de requisições. A que nos pegou foi o empilhamento. O SDK tentava três vezes, o mesh tentava duas, e o executor de jobs tentava de novo, o que dá dezoito tentativas para uma chamada lógica.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que é full jitter versus decorrelated jitter?
- Quais códigos de status HTTP são seguros para retry e por quê?
- Como você impediria retries de se multiplicarem através de um service mesh?
Mais perguntas para Engenheiro de Confiabilidade de Sites
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas