什麼是熔斷機制

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

熔斷的作用

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

如何保護

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

提升存活率

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

封面圖片使用 Unsplash 上 PhotSigmun 的作品,有想聽的主題可以透過匿名問卷告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
在雲端的時代中,我們可以利用 Auto Scaling(自動規模化)的方式來自動的增加或者減少伺服器的數量。也因此很多人會認為這是一個針對「大流量」的機制,也會把它當作一個解決「突發狀況」的解決方案,然而實際上真的是這樣嗎?
前陣子剛好聽了 AWS(Amazon Web Service,亞馬遜的雲端服務)介紹他們的雲端服務,簡單來說就是從「硬體思維」轉換到「軟體思維」的方式,以軟體方式去思考就可以看作是「雲端」
在雲端的時代中,我們可以利用 Auto Scaling(自動規模化)的方式來自動的增加或者減少伺服器的數量。也因此很多人會認為這是一個針對「大流量」的機制,也會把它當作一個解決「突發狀況」的解決方案,然而實際上真的是這樣嗎?
前陣子剛好聽了 AWS(Amazon Web Service,亞馬遜的雲端服務)介紹他們的雲端服務,簡單來說就是從「硬體思維」轉換到「軟體思維」的方式,以軟體方式去思考就可以看作是「雲端」
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
前篇內容提到說,async reset有著打出glitch的風險, 但除了glitch之外, 如果reset deassert的時間點不對的話可是造出大量metastable的data, 直接導致function fail, 至於assert的時間點因為是async reset,所以何時出發
Thumbnail
討論系統架構時,我們常忽略低流量時期的準備,但真正的挑戰在於怎樣在突發高流量時保持穩定。我們深入探討了如何透過水平擴展、負載均衡、快取策略等多維度規劃,來強化系統對高流量的承受力,確保系統的靈活擴展與高可用性。
Thumbnail
瞭解電線套管的作用和重要性,包括使用電線套管的原因、不同種類的電線套管及使用時需要注意的事項。
Thumbnail
電子零件常會出現磨損和故障,本文分享了幾個電制故障的常見原因和解決方法。包括電線連接問題、電制過載、火線熔斷、電制零件損壞等。建議在面對電制故障時,考慮尋求專業的幫助,並確保斷開電源,以確保安全。有時候需要更換整個電制或相關的零件才能修復故障。
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
Thumbnail
普通人要維持防護結界的機率接近於 0 . 我也都已經都處理乾淨了,也有加上正能量和防護結界, 你之後再觀察看看,要是有不舒服或感覺不對的情況, 請馬上跟我說,我後續會繼續處理的。 然後防護結界至少會維持 48 小時。 . 上面這堆話, 只要有找我趕鬼清理過的人大概常看到, 網友問,
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
前篇內容提到說,async reset有著打出glitch的風險, 但除了glitch之外, 如果reset deassert的時間點不對的話可是造出大量metastable的data, 直接導致function fail, 至於assert的時間點因為是async reset,所以何時出發
Thumbnail
討論系統架構時,我們常忽略低流量時期的準備,但真正的挑戰在於怎樣在突發高流量時保持穩定。我們深入探討了如何透過水平擴展、負載均衡、快取策略等多維度規劃,來強化系統對高流量的承受力,確保系統的靈活擴展與高可用性。
Thumbnail
瞭解電線套管的作用和重要性,包括使用電線套管的原因、不同種類的電線套管及使用時需要注意的事項。
Thumbnail
電子零件常會出現磨損和故障,本文分享了幾個電制故障的常見原因和解決方法。包括電線連接問題、電制過載、火線熔斷、電制零件損壞等。建議在面對電制故障時,考慮尋求專業的幫助,並確保斷開電源,以確保安全。有時候需要更換整個電制或相關的零件才能修復故障。
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
Thumbnail
普通人要維持防護結界的機率接近於 0 . 我也都已經都處理乾淨了,也有加上正能量和防護結界, 你之後再觀察看看,要是有不舒服或感覺不對的情況, 請馬上跟我說,我後續會繼續處理的。 然後防護結界至少會維持 48 小時。 . 上面這堆話, 只要有找我趕鬼清理過的人大概常看到, 網友問,