iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Modern Web

Backend Developer的學習Roadmap系列 第 27

Day 27 Mitigation Strategies - Circuit Breaker

  • 分享至 

  • xImage
  •  

Circuit Breaker是我們生活中很常見的東西,我們的總電源開關就是一個circuit breaker,當它的電流太大時,它就會自動切斷電源,來保護設備以防發生火災。
而我們軟體中,也是類似的保護措施。

https://ithelp.ithome.com.tw/upload/images/20241010/20129702MqfvwlLF2H.png

Closed

當我們的系統運作正常時,Circuit Breaker關閉,流量會正常發送到app上,道路是暢通的。

Open

如果一段時間內系統檢測到多次請求失敗或延遲過高,Circuit Breaker會開啟,阻止新的請求到app。這樣做可以防止故障擴大,並讓系統進入恢復期,才不會一直有錯誤新增。
例如DB已經斷線了,那麼就不應該發送更新資料請求過去,以免造成更多更多的狀態不同步問題。

Half-Open

在一段時間恢復後,Circuit Breaker會允許少量的請求到app,來檢測故障是否已經被修復了,如果這些請求成功,Circuit Breaker會變成closed狀態,如果還是失敗了,則重新回到open狀態。

https://ithelp.ithome.com.tw/upload/images/20241010/20129702nHRdJRim8y.png

與Retry的差別

它與retry都是處理失敗請求的策略,都會重新送流量過去到app,retry比較適合短時間的網路問題,失敗了就多送幾次直到它成功XD
我們總不能無限的retry吧,因此就有Circuit Breaker,如果失敗太多次,就關閉起來,等一段時間後,再看看它有沒有修復成功(Half -open),如果成功就會變成closed。

總結

我們今天了解了Circuit Breaker的功能,讓我們的系統可以避免資源過載,並且讓系統多一點彈性,增加使用者的體驗。

reference

https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker


上一篇
Day 26 Mitigation Strategies - Backpressure
下一篇
Day 28 Migration Strategies
系列文
Backend Developer的學習Roadmap30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言