Hystrix熔断原理
Netflix的開源組件Hystrix的流程:?
圖中流程的說明:
a. 服務(wù)調(diào)用發(fā)生超時(shí)時(shí),進(jìn)入步驟8。
a. 執(zhí)行成功返回結(jié)果。?
b. 執(zhí)行中出現(xiàn)錯(cuò)誤則進(jìn)入步驟8。
a. 沒有實(shí)現(xiàn)getFallback()回退邏輯的調(diào)用將直接拋出異常。?
b. 回退邏輯調(diào)用成功直接返回。?
c. 回退邏輯調(diào)用失敗拋出異常。
注意:熔斷是否開啟熔斷器主要由依賴調(diào)用的錯(cuò)誤比率決定的,依賴調(diào)用的錯(cuò)誤比率=請(qǐng)求失敗數(shù)/請(qǐng)求總數(shù)。Hystrix中斷路器打開的默認(rèn)請(qǐng)求錯(cuò)誤比率為50%(這里暫時(shí)稱為請(qǐng)求錯(cuò)誤率),還有一個(gè)參數(shù),用于設(shè)置在一個(gè)滾動(dòng)窗口中,打開斷路器的最少請(qǐng)求數(shù)(這里暫時(shí)稱為滾動(dòng)窗口最小請(qǐng)求數(shù)),這里舉個(gè)具體的例子:如果滾動(dòng)窗口最小請(qǐng)求數(shù)為默認(rèn)20,在一個(gè)窗口內(nèi)(默認(rèn)10秒,統(tǒng)計(jì)滾動(dòng)窗口的時(shí)間可以設(shè)置),收到19個(gè)請(qǐng)求,即使這19個(gè)請(qǐng)求都失敗了,此時(shí)請(qǐng)求錯(cuò)誤率高達(dá)95%,但是斷路器也不會(huì)打開。對(duì)于被熔斷的請(qǐng)求,并不是永久被切斷,而是被暫停一段時(shí)間(默認(rèn)是5000ms)之后,允許部分請(qǐng)求通過,若請(qǐng)求都是健康的(ResponseTime<250ms)則對(duì)請(qǐng)求健康恢復(fù)(取消熔斷),如果不是健康的,則繼續(xù)熔斷。(這里很容易出現(xiàn)一種錯(cuò)覺:多個(gè)請(qǐng)求失敗但是沒有觸發(fā)熔斷。這是因?yàn)樵谝粋€(gè)滾動(dòng)窗口內(nèi)的失敗請(qǐng)求數(shù)沒有達(dá)到打開斷路器的最少請(qǐng)求數(shù))
總結(jié)
以上是生活随笔為你收集整理的Hystrix熔断原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么说 GraphQL 可以取代 RE
- 下一篇: 熔断器 Hystrix 的原理与使用