Overview
go-go-scope provides built-in resilience patterns to handle failures gracefully:- Circuit Breakers - Prevent cascading failures
- Retries - Automatic retry with backoff strategies
- Timeouts - Limit execution time
- Rate Limiting - Control request rates
Circuit Breakers
Circuit breakers prevent cascading failures by stopping requests to failing services.States
- Closed - Normal operation, requests pass through
- Open - Too many failures, requests fail immediately
- Half-Open - Testing if service recovered
Basic Usage
Circuit Breaker Events
Advanced Features
Adaptive Threshold
Adaptive Threshold
Dynamically adjust failure threshold based on error rate:
Sliding Window
Sliding Window
Count failures within a time window instead of cumulative:
Event Subscription
Event Subscription
Subscribe to circuit breaker events:
Retry Strategies
Automatic retry with configurable backoff algorithms:Exponential Backoff
Full Jitter (AWS-style)
Random delay between 0 and calculated value:Decorrelated Jitter (Azure-style)
Better for high-contention scenarios:Linear Backoff
Fixed Delay with Jitter
Conditional Retry
Only retry on specific errors:Timeouts
Limit execution time at scope or task level:Rate Limiting
Token Bucket
Control request rates with token bucket algorithm:Semaphore
Limit concurrent operations:Scope-Level Concurrency
Combining Patterns
Circuit Breaker + Retry + Timeout
Rate Limiting + Retry
Real-World Examples
Resilient API Client
Database Query with Retries
Best Practices
Use Circuit Breakers
Prevent cascading failures in distributed systems
Add Jitter
Use jitter in retries to avoid thundering herd
Set Timeouts
Always set reasonable timeouts for external calls
Conditional Retries
Only retry transient failures, not permanent errors
Next Steps
Streams
Process data streams with backpressure control
Scheduler
Distributed job scheduling with fault tolerance