Circuit Breaker Pattern
Failed service-এ call করা বন্ধ — cascading failure prevention।
আপনার বাড়িতে একটি electrical appliance short-circuit হলে — circuit breaker trip করে। বিদ্যুৎ flow বন্ধ — বাড়ি আগুন লাগে না। Software-এও same idea: একটি service fail করলে — তার call বন্ধ করুন। নাহলে cascade হয়ে পুরো system ভাঙে।
Problem: Cascading Failure
Service A → Service B → Service C। B slow/fail হলে:
- A-এর request B-তে timeout পর্যন্ত wait।
- A-এর thread/connection pool fill।
- A নতুন request নিতে পারে না।
- A-এর caller-ও fail।
- Domino effect — পুরো system down।
Circuit Breaker কী?
Circuit Breaker Pattern = একটি service-এর call wrap করা যাতে failure threshold পার হলে — automatic call বন্ধ। পরে periodic try করে recovery check।
Michael Nygard-এর "Release It!" বই (২০০৭) থেকে popularized।
তিন State
১. Closed (Normal)
- Request normally pass হয়।
- Failure count track।
- Threshold পার হলে → Open।
২. Open (Tripped)
- সব request immediately fail (fast-fail)।
- Service-এ call যায় না।
- Timeout পরে → Half-Open।
৩. Half-Open (Testing Recovery)
- Limited trial request যায়।
- Success হলে → Closed (recovered)।
- Fail হলে → Open আবার।
সুবিধা
- Fast fail: User-কে instant error — wait নয়।
- Resource protection: Failed service-এর resource block।
- Cascade prevention: Caller সুরক্ষিত।
- Auto-recovery: Service ফিরলে — automatic detect।
- Graceful degradation: Fallback response possible।
Configuration
- Failure threshold: কত fail হলে open (e.g., 50% over 10 requests)।
- Timeout duration: Open থেকে half-open transition (e.g., 30 sec)।
- Success threshold: Half-open থেকে closed transition।
- Time window: Failure rate কোন duration-এ measure।
Fallback Strategies
Circuit open থাকলে — কী response দেবে?
- Default value: "Recommendations unavailable; popular items show করি"।
- Cached response: Last known good data।
- Empty response: Optional feature-এ।
- Error message: Honest user notification।
- Alternative service: Backup endpoint।
Implementation
Library Pattern
Popular Libraries
- Resilience4j (Java): Modern standard।
- Hystrix (Netflix, deprecated): Pioneer।
- Polly (.NET): Resilience library।
- opossum (Node.js): Popular।
- Service Mesh (Istio): Built-in circuit breaker।
Related Patterns
Retry
Failure-এ automatic re-try। Circuit breaker-এর সাথে combine করুন।
- Exponential backoff।
- Jitter।
- Max retry limit।
Timeout
প্রতি call-এ time limit। Hang prevent।
Bulkhead
Resource pool isolated — এক service-এর failure অন্যকে affect করবে না।
Rate Limiting
Inbound traffic limit — পরের chapter।
বাস্তব উদাহরণ
- Netflix: Hystrix তৈরি — ১,০০০+ microservice protect।
- Amazon: Per-service circuit breaker mandatory।
- Uber: Service-to-service circuit breaker।
- Banking: Payment gateway integration।
উদাহরণ — E-commerce
Recommendation service down হলে:
- Without breaker: Product page slow load — recommendation timeout।
- With breaker: Recommendation panel "popular items" দেখায়; rest of page fast।
User-experience much better।
Anti-patterns
- Single global breaker: Per-service আলাদা হওয়া উচিত।
- Aggressive threshold: Slight blip-এ circuit trip।
- No fallback: Circuit open কিন্তু user empty response।
- No monitoring: Circuit silently open হয়ে যায়।
সাধারণ ভুল ধারণা
- "Circuit breaker = retry": Different — retry try; breaker block।
- "Always good idea": Internal call-এ overhead — important call-এ লাগান।
- "Auto-magic": Tuning দরকার — wrong threshold = useless।
Best Practices
- Per-dependency আলাদা circuit।
- Sliding window failure rate use।
- Fallback strategy thoughtfully design।
- Monitoring + alerting।
- Half-open phase-এ careful।
- Combine retry + timeout + bulkhead।
- Service Mesh (Istio) থাকলে built-in use করুন।
📌 চ্যাপ্টার সারমর্ম
- Circuit Breaker = failed service-এ call block।
- Closed → Open → Half-Open three states।
- Cascading failure prevention।
- Fallback strategy graceful degradation।
- Resilience4j, Hystrix — popular libraries।