Resilienz-Patterns
Circuit Breaker
Zustände
- Closed: Normal, Requests durchgelassen
- Open: Fehler, Requests blockiert
- Half-Open: Test, einzelne Requests
Konfiguration
- Failure Threshold
- Success Threshold
- Timeout für Open State
Libraries
- Resilience4j (Java)
- Polly (.NET)
- Hystrix (Legacy)
- Node.js: opossum
Retry Pattern
Strategien
- Fixed Delay
- Exponential Backoff
- Exponential Backoff mit Jitter
- Linear Backoff
Best Practices
- Max Retry Limit
- Idempotente Operationen
- Jitter für verteilte Systeme
- Retryable vs Non-Retryable Errors
Formel Exponential Backoff
delay = min(base * 2^attempt + jitter, maxDelay)
Bulkhead Pattern
Konzept
- Ressourcen-Isolierung
- Failure Containment
- Wie Schotten im Schiff
Implementierung
- Thread Pool Isolation
- Semaphore Isolation
- Connection Pool Limits
- Queue Limits
Timeout Pattern
Typen
- Connection Timeout
- Request Timeout
- Read/Write Timeout
- Circuit Breaker Timeout
Best Practices
- Angemessene Werte
- Propagation in Kette
- Timeout < Circuit Breaker
- Monitoring
Fallback Pattern
Strategien
- Cache (stale data)
- Default Value
- Alternative Service
- Graceful Degradation
- Error Message
Rate Limiting
Algorithmen
- Token Bucket
- Leaky Bucket
- Fixed Window
- Sliding Window
Anwendung
- API Protection
- DDoS Mitigation
- Fair Usage
Health Check Pattern
Liveness
- "Bin ich am Leben?"
- Neustart bei Failure
Readiness
- "Kann ich Traffic verarbeiten?"
- Aus Load Balancer entfernen
Startup
- "Bin ich bereit?"
- Für langsame Starts
Kombination von Patterns
Request
↓
Timeout ─── Abbruch
↓
Retry ─── Circuit Breaker ─── Fallback
↓ ↓ ↓
Success Open State Cached Data
Monitoring
- Circuit State Metriken
- Retry Attempts
- Fallback Invocations
- Error Rates
CFTools Software implementiert Resilienz-Patterns für robuste Anwendungen.