NetRunner: Java Mastery Guide 1.0 Help

Circuit Breaker

Visão Geral

Circuit Breaker

Estados

Monitoramento

Recuperação

Fechado

Aberto

Semi-Aberto

Falhas

Timeouts

Métricas

Fallback

Reset

Retry

Implementação Base

public class CircuitBreaker { private CircuitState state; private int failureCount; public <T> T execute(Supplier<T> operation) { // Implementação } }

Estados do Circuit Breaker

1. CLOSED (Fechado)

  • Estado normal

  • Operações permitidas

  • Monitoramento de falhas

2. OPEN (Aberto)

  • Falhas detectadas

  • Rejeita requisições

  • Timeout para reset

3. HALF-OPEN (Semi-Aberto)

  • Período de teste

  • Limitação de requisições

  • Monitoramento intensivo

Componentes Principais

  1. Failure Detection

    • Contagem de falhas

    • Tipos de erro

    • Thresholds

  2. State Management

    • Transições

    • Timeouts

    • Reset logic

  3. Fallback Mechanism

    • Respostas default

    • Cache

    • Alternativas

Uso Prático

CircuitBreaker breaker = new CircuitBreaker("payment-service"); breaker.addFallback("process-payment", () -> "Fallback Response"); try { String result = breaker.execute("process-payment", () -> paymentService.process()); } catch (CircuitBreakerException e) { // Handle exception }

Configurações

  1. Thresholds

public record BreakerConfig( int failureThreshold, long resetTimeout, int halfOpenCalls ) {}
  1. Métricas

public class BreakerMetrics { private long failureCount; private long successCount; private double errorRate; }

Padrões de Uso

  1. Remote Services

    • APIs externas

    • Microserviços

    • Banco de dados

  2. Resource Protection

    • Rate limiting

    • Load balancing

    • Degradação graciosa

Boas Práticas

  1. Configuração

    • Thresholds apropriados

    • Timeouts adequados

    • Fallbacks relevantes

  2. Monitoramento

    • Logging detalhado

    • Métricas em tempo real

    • Alertas

  3. Recuperação

    • Estratégias de retry

    • Backoff exponencial

    • Cache de fallback

Exercícios Práticos

  1. Implementar Métricas

public class MetricsCollector { public void recordSuccess() { // Implementar } public void recordFailure() { // Implementar } }
  1. Criar Fallback

public class FallbackRegistry { public void register(String operation, Supplier<?> fallback) { // Implementar } }

Integração com Sistemas

  1. Monitoring

    • Prometheus

    • Grafana

    • Health checks

  2. Logging

    • Estado changes

    • Falhas

    • Recuperações

Próximos Passos

  • Implementar circuit breaker distribuído

  • Adicionar métricas avançadas

  • Criar dashboard de monitoramento

  • Integrar com service mesh

Voltar para Projetos de Erro

26 June 2025