Circuit Breaker Pattern: o que é e quando aplicar
O circuit breaker pattern é um padrão de design que evita falhas em cascata em sistemas distribuídos. Veja quando aplicar e como implementar.
O circuit breaker pattern é um padrão de design que evita falhas em cascata em sistemas distribuídos. Veja quando aplicar e como implementar.
O circuit breaker pattern é um padrão de projeto comportamental usado em desenvolvimento de software para evitar que falhas em um serviço externo causem falhas em cascata em todo o sistema. Segundo o Wikidata (2026-09-01), trata-se de um behavioral design pattern. Em vez de deixar cada chamada tentar alcançar um serviço que já está falhando, o padrão monitora as falhas e, após um limite, interrompe as chamadas por um período, como um disjuntor elétrico.
Como funciona o circuit breaker pattern?
O padrão funciona com três estados principais: fechado, aberto e meio-aberto. No estado fechado, as chamadas fluem normalmente. Quando o número de falhas ultrapassa um limite configurável, o circuito abre e as chamadas são rejeitadas imediatamente, sem tentar acessar o serviço. Após um tempo de espera, o circuito entra em meio-aberto e permite algumas chamadas de teste. Se elas passarem, o circuito fecha novamente; se falharem, reabre.
Quando aplicar o circuit breaker pattern?
Aplique quando houver chamadas síncronas a serviços remotos que podem ficar lentos ou indisponíveis, como em microservices. O padrão é útil para proteger recursos críticos, evitar que threads fiquem presas esperando timeout e reduzir a carga em um serviço já sobrecarregado. Não é recomendado para chamadas locais ou assíncronas, onde outros mecanismos são mais adequados.
Quais são os benefícios?
O principal benefício é a resiliência: o sistema continua funcionando mesmo quando uma dependência falha. Ele também dá tempo para o serviço afetado se recuperar, evita acúmulo de requisições e reduz custos operacionais. Porém, exige configuração cuidadosa de limites e timeouts.
Quais são as desvantagens?
O padrão adiciona complexidade e pode mascarar problemas se os limites forem mal configurados. Em cenários de falhas transitórias curtas, o circuito pode abrir desnecessariamente. Também não substitui timeouts, retries ou fallbacks, que devem ser combinados.
Exemplos de implementação
Bibliotecas como Resilience4j (Java) e Hystrix (embora descontinuado) implementam o padrão. Em .NET, o Polly oferece suporte. A implementação envolve definir thresholds de falha, janela de tempo e estratégia de fallback.
Resumo
O circuit breaker pattern é essencial para sistemas distribuídos que precisam de tolerância a falhas. Aplique com critério, ajustando limites conforme o comportamento real do serviço.
FAQ
O circuit breaker pattern é igual a retry?
Não. Retry tenta novamente a mesma chamada após uma falha, enquanto o circuit breaker interrompe as chamadas por um período. Eles são complementares, mas têm objetivos diferentes.
O circuit breaker funciona só em microservices?
Não, mas é mais comum em microservices e APIs distribuídas. Pode ser usado em qualquer chamada remota onde há risco de falhas em cascata.
Como definir o limite de falhas?
O limite depende do contexto. Comece com valores conservadores, como 5 falhas em 10 segundos, e ajuste com base em métricas reais de erro e latência.
O circuit breaker substitui timeout?
Não. O timeout é uma proteção básica; o circuit breaker atua em nível de agregação de falhas. Ambos devem coexistir.
Quais bibliotecas usam circuit breaker?
Resilience4j (Java), Polly (.NET) e Hystrix (legado) são exemplos. Em Go, há pacotes como gobreaker.
O circuit breaker pode causar indisponibilidade?
Se configurado de forma agressiva, pode rejeitar chamadas válidas. Por isso, monitore e ajuste os parâmetros continuamente.
Letícia Sampaio Khoury
Editora de Gadgets e Consumo Tech
Testa o gadget no dia a dia real, avalia se vale a grana sem deslumbre de novidade.
Ver todos os artigos →