檢舉內容
什麼是熔斷機制

2022/03/21閱讀時間約 1 分鐘
年初在開發者對話(一月)的活動主題 Health Check(健康檢查) 延伸討論到熔斷(Circuit Breaker)機制,這次就來跟大家稍微聊一下這個功能。
我們在設計系統的時候大多不會馬上考慮到這個問題,然而當系統遭遇到「超出負荷」的情況時,使用熔斷處理就會是一個很不錯的方法。

熔斷的作用

熔斷這個詞基本上就是「保險絲熔斷」的意思,我們可以很直覺的將這個概念套用到網路服務中的「熔斷」概念,也就是所謂的「超出負荷停止服務」的機制。
會延伸到這個問題,是因為有人認為當服務不正常時 Health Check 也該正常回應這樣的想法,然而如果 Health Check 還能回應正常,不就無法反應當下這個服務「超出負荷」的狀況了嗎?
也就是說,如果將 Health Check 視為「自我檢查」那麼熔斷就是其他人去檢查的機制,或者說一種「保險措施」

如何保護

我們以 Circuitbox 這個 Ruby Gem 為例子來看,當我們呼叫其他服務在一定時間內失敗超過一定次數時,會「暫停呼叫」並且在一段時間後重新測試。
這跟保險絲的原理也是類似的,我們假設每個服務都有他的「極限」存在,當我們失敗多次後表示呼叫的服務可能是超過極限的狀態。因此我們「暫停」或者「中斷」呼叫,直到後面的服務恢復到正常的狀態,有了這樣的機制,我們就可以避免在超出負荷的狀態下還繼續「增加負擔」

提升存活率

簡單來說,這是一種提升存活率的手段之一。即使我們什麼都不做,網站死掉連不上也是一種「熔斷」然而這個熔斷可能是「非常嚴重」的狀態。
除此之外,即使我們自己的系統是正常的。有沒有可能合作的廠商系統正處於高度負載的狀態?如果再繼續呼叫,那麼我們可能就會成為壓倒駱駝的最後一根稻草。
透過恰當的熔斷機制,我們至少可以確保所有服務至少能夠維持在「存活」的狀態下,至少會比整個中斷後的成本要低,就像電腦當機後恢復跟重開機,後者有可能是「重要檔案沒有存檔」的狀態,問題可能嚴重很多。

封面圖片使用 Unsplash 上 PhotSigmun 的作品,有想聽的主題可以透過匿名問卷告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
贊助創作者百元,就抽 $8,888 紅包與好禮!
我是軟體開發的求道者蒼時弦也,主要使用猶如賢者之石一般的 Ruby 語言,期望能夠在軟體開發這條路上找出一個能讓每個人都享受撰寫程式樂趣的方法,並且讓世界上能有更多優秀的程式被設計出來。
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
如果要發表留言,請先登入註冊會員
打造你的創作天地
在這裡尋找共鳴,與方格子的 35 萬格友分享觀點與生活。
領取見面禮
只要設定追蹤作者,即可享有 48小時
Premium 閱讀權限