# Circuit Breaker Pattern: o que é e quando aplicar

> O Circuit Breaker Pattern é um padrão de design para sistemas distribuídos que interrompe chamadas a serviços instáveis, prevenindo falhas em cascata. O padrão monitora falhas consecutivas e abre o circuito, redirecionando tráfego ou retornando erro rápido. A aplicação ocorre em integrações com dependências externas, como APIs ou bancos de dados, quando a latência ou erros excedem limites. A implementação envolve estados fechado, aberto e meio-aberto, com timeouts e políticas de reset.

*Digitorack · Apps e Software · 01 de setembro de 2026 · Letícia Sampaio Khoury*

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.

---

Fonte (canonical): https://digitorack.com.br/apps-e-software/circuit-breaker-pattern-o-que-e-e-quando-aplicar/
