系統設計 中階
斷路器(Circuit Breaker)模式的工作原理與實作
斷路器模式
問題背景
微服務 A 呼叫服務 B,若 B 無回應或一直失敗,A 會累積大量等待執行緒,最終導致 A 也崩潰(級聯失敗/Cascading Failure)。
斷路器三種狀態
Closed(正常)→ 達到失敗閾值 → Open(斷路)
↑ ←等待重設時間→ ↓
Half-Open(試探)← 試探成功 ←────
↓ 試探失敗
→ Open
| 狀態 | 行為 |
|---|---|
| Closed | 正常請求,記錄失敗率 |
| Open | 立即返回錯誤(不呼叫下游),給下游恢復時間 |
| Half-Open | 允許少量試探請求,決定是否恢復 |
實作工具
- Java:Resilience4j、Netflix Hystrix(已停止維護)
- Go:gobreaker
- Service Mesh:Istio 可在 sidecar 層實作
降級(Fallback)策略
斷路器開啟時,可執行 fallback:
- 返回快取的舊資料
- 返回預設值
- 返回「服務暫時不可用」友善訊息
面試加分:斷路器 + 重試(Retry)+ 超時(Timeout)+ 艙壁(Bulkhead)合稱「微服務韌性模式」,Resilience4j 提供全套實作。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
