斷路器模式
什么是斷路器模式
在分布式環(huán)境中,對遠程資源和服務(wù)的調(diào)用可能會由于臨時性故障(如網(wǎng)絡(luò)連接緩慢、超時、資源過載或資源暫時不可用)而失敗。這些故障通常會在短時間內(nèi)自行更正,而且,應(yīng)該會準備一個可靠的云應(yīng)用程序,通過重試模式這樣的策略來處理它們。
但是,也可能遇到由于意外事件而導(dǎo)致的故障,且需要更長的時間來進行修復(fù)。這些故障輕則導(dǎo)致部分連接中斷,重則導(dǎo)致服務(wù)完全癱瘓。這類情況下,讓應(yīng)用程序持續(xù)重試不可能成功的操作是毫無意義的。相反,應(yīng)用程序應(yīng)該快速認識到操作已失敗,并相應(yīng)地處理此故障。
此外,如果服務(wù)十分繁忙,那么系統(tǒng)一個部分的故障可能會導(dǎo)致連鎖故障。例如,調(diào)用服務(wù)的操作可以被配置為實現(xiàn)超時,并且在服務(wù)未能在此期間內(nèi)響應(yīng)時返回失敗消息。但是,此策略可能導(dǎo)致同一操作的許多并發(fā)請求受到阻止,直至超時期間到期。這些阻止的請求可能占用了關(guān)鍵的系統(tǒng)資源,如內(nèi)存、線程、數(shù)據(jù)庫連接等。因此,這些資源可能被耗盡,從而導(dǎo)致需要使用相同資源的系統(tǒng)其他不相關(guān)部分出現(xiàn)故障。在這些情況下,更有益的做法便是讓操作立即失敗并只在服務(wù)可能成功時才嘗試調(diào)用服務(wù)。請注意,設(shè)置較短的超時可能有助于解決此問題,但為避免操作在大多數(shù)時間內(nèi)失敗,超時不應(yīng)太短(即使對服務(wù)的請求最終會成功)。
為什么要用斷路器模式
對遠程資源和服務(wù)的調(diào)用由于意外事件發(fā)生了故障,并且該故障需要一段較長的時間來進行修復(fù)。這類情況下,讓應(yīng)用程序持續(xù)重試不可能成功的操作是毫無意義的。相反,應(yīng)用程序應(yīng)該快速認識到操作已失敗,并相應(yīng)地處理此故障。
怎么使用斷路器模式
什么場景適用
由于意外事件而導(dǎo)致的故障,且需要更長的時間來進行修復(fù)。這些故障輕則導(dǎo)致部分連接中斷,重則導(dǎo)致服務(wù)完全癱瘓
什么場景不適用
對遠程資源和服務(wù)的調(diào)用可能會由于臨時性故障(如網(wǎng)絡(luò)連接緩慢、超時、資源過載或資源暫時不可用)而失敗。這些故障通常會在短時間內(nèi)自行更正
使用不當?shù)暮蠊?/p>
如果錯誤的使用斷路器,導(dǎo)致一些可以通過重試機制恢復(fù)正常的異常,也被斷路器阻斷,會降低系統(tǒng)的穩(wěn)定性。
如何正確使用
和超時一起使用
當斷路器被觸發(fā)時,一般意味著嚴重的情況發(fā)生,要記錄,告警,并通知相關(guān)干系人。
實現(xiàn)原理
