springcloud hystrix入门简介(一)
什么是Hystrix?
Hystrix是Spring Cloud提供的一種帶有熔斷機制的框架,由于在微服務系統(tǒng)中同一個操作會由多個不同的微服務來共同完成,所以微服務與微服務之間會由很多相互的調用,由于在分布式環(huán)境中經(jīng)常會出現(xiàn)某個微服務節(jié)點故障的情況,所以會由調用失敗發(fā)生,而熔斷器的作用就是當出現(xiàn)遠程調用失敗的時候提供一種機制來保證程序的正常運行而不會卡死在某一次調用,類似Java程序中的try-catch結構,而只有當異常發(fā)生的時候才會進入catch的代碼塊
在分布式架構中,當某個服務單元發(fā)生故障之后,通過斷路由器的故障監(jiān)控(類似熔斷保險絲),向調用方返回一個錯誤響應,而不是長時間的等待。這樣就不會使得線程因調用故障服務被長時間占用不釋放,避免了故障在分布式系統(tǒng)中的蔓延。
Spring Cloud Hystrix針對上述問題實現(xiàn)了斷路由器、線程隔離等一系列服務保護功能。它是基于Netflix Hystrix實現(xiàn),該框架的目標在于通過控制那些訪問遠程系統(tǒng)、服務和第三方庫的節(jié)點,從而對延遲和故障提供更強大的容錯能力。
Hystrix具備服務降級、服務熔斷、線程和信號隔離、請求緩存、請求合并以及服務監(jiān)控等強大功能。
?
為什么需要Hystrix?
我們知道大量請求會阻塞在Tomcat服務器上,影響其它整個服務.在復雜的分布式架構的應用程序有很多的依賴,都會不可避免地在某些時候失敗.高并發(fā)的依賴失敗時如果沒有隔離措施,當前應用服務就有被拖垮的風險.
Spring Cloud Netflix Hystrix就是隔離措施的一種實現(xiàn),可以設置在某種超時或者失敗情形下斷開依賴調用或者返回指定邏輯,從而提高分布式系統(tǒng)的穩(wěn)定性.
生活中舉個例子,如電力過載保護器,當電流過大的的時候,出問題,過載器會自動斷開,從而保護電器不受燒壞。因此Hystrix請求熔斷的機制跟電力過載保護器的原理很類似。
比如:訂單系統(tǒng)請求庫存系統(tǒng),結果一個請求過去,因為各種原因,網(wǎng)絡超時,在規(guī)定幾秒內沒反應,或者服務本身就掛了,這時候更多的請求來了,不斷的請求庫存服務,不斷的創(chuàng)建線程,因為沒有返回,也就資源沒有釋放,
這也導致了系統(tǒng)資源被耗盡,你的服務奔潰了,這訂單系統(tǒng)好好的,你訪問了一個可能有問題的庫存系統(tǒng),結果導致你的訂單系統(tǒng)也奔潰了,你再繼續(xù)調用更多的依賴服務,可會會導致更多的系統(tǒng)奔潰,這時候Hystrix可以實現(xiàn)快速失敗,
如果它在一段時間內偵測到許多類似的錯誤,會強迫其以后的多個調用快速失敗,不再訪問遠程服務器,從而防止應用程序不斷地嘗試執(zhí)行可能會失敗的操作進而導致資源耗盡。這時候Hystrix進行FallBack操作來服務降級,
Fallback相當于是降級操作. 對于查詢操作, 我們可以實現(xiàn)一個fallback方法, 當請求后端服務出現(xiàn)異常的時候, 可以使用fallback方法返回的值. fallback方法的返回值一般是設置的默認值或者來自緩存.通知后面的請求告知這服務暫時不可用了。
使得應用程序繼續(xù)執(zhí)行而不用等待修正錯誤,或者浪費CPU時間去等到長時間的超時產(chǎn)生。Hystrix熔斷器也可以使應用程序能夠診斷錯誤是否已經(jīng)修正,如果已經(jīng)修正,應用程序會再次嘗試調用操作。
如下圖所示:
?
?
?
總結
以上是生活随笔為你收集整理的springcloud hystrix入门简介(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MQTT再学习 -- 安装MQTT客户端
- 下一篇: 日常生活小技巧 -- vim 中 cta