熔斷器與穩定性模式 (Circuit Breaker)

★★★★Draft

FromBuilding Microservices

📚 From the Books

熔斷器與穩定性模式 (Circuit Breaker)ConceptReliability

分散式系統裡,「慢」比「死」更致命——一個龜速的下游會把上游的連線與執行緒耗光,整站陪葬。熔斷器、逾時、隔艙就是這條止血線。

🧠 Core Ideas

TIP

熔斷器=連續失敗 N 次就「」,之後請求快速失敗、不再打已經在燒的下游;過一陣子放少量探測,健康就重置。正常情境下 fail fast 遠勝 fail slow

⚖️ Tradeoffs

逾時 (Time-outs) — 每個跨行程呼叫都要設
  • 看下游正常回應時間(多半 ms 級),設略高於正常範圍就好(把 30 秒改 1 秒——用戶 30 秒早重整五次了)。
  • 除了單次逾時,對整個操作設 total budget:預算用光就中止,即使單一呼叫還沒到 timeout。
隔艙 (Bulkheads) — 別共用同一個池
  • 出自《Release It!》:船艙漏水能封閉、保住其他艙。
  • 關鍵錯誤是所有下游共用同一個 connection pool → 一個慢下游拖垮全部。正解:每個下游一個獨立 pool
  • 資源緊張時主動拒絕請求(load shedding);切細微服務本身就是一種隔艙。
熔斷器 (Circuit Breaker) — 同步下游建議「強制」加
  • 連續失敗 → open → 後續請求快速失敗,不再打下游;定時探測、健康則重置。
  • 額外用途:當自動的隔艙密封;維護時手動開斷,避免請求打到下線服務;操作前先看狀態,已 open 就直接放棄。
  • 重試搭配:可重試錯誤(503/504)才重試、且要退避,別在下游燒起來時猛打。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading