真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Hystrix怎么在springcloud中使用

Hystrix怎么在springcloud中使用?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

祿豐網站制作公司哪家好,找創(chuàng)新互聯(lián)!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、成都響應式網站建設公司等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯(lián)。

熔斷器

雪崩效應

在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致級聯(lián)故障,進而造成整個系統(tǒng)不可用的情況,這種現(xiàn)象被稱為服務雪崩效應。服務雪崩效應是一種因“服務提供者”的不可用導致“服務消費者”的不可用,并將不可用逐漸放大的過程。

如果下圖所示:A作為服務提供者,B為A的服務消費者,C和D是B的服務消費者。A不可用引起了B的不可用,并將不可用像滾雪球一樣放大到C和D時,雪崩效應就形成了。

Hystrix怎么在springcloud中使用

熔斷器(CircuitBreaker)

熔斷器的原理很簡單,如同電力過載保護器。它可以實現(xiàn)快速失敗,如果它在一段時間內偵測到許多類似的錯誤,會強迫其以后的多個調用快速失敗,不再訪問遠程服務器,從而防止應用程序不斷地嘗試執(zhí)行可能會失敗的操作,使得應用程序繼續(xù)執(zhí)行而不用等待修正錯誤,或者浪費CPU時間去等到長時間的超時產生。熔斷器也可以使應用程序能夠診斷錯誤是否已經修正,如果已經修正,應用程序會再次嘗試調用操作。

熔斷器模式就像是那些容易導致錯誤的操作的一種代理。這種代理能夠記錄最近調用發(fā)生錯誤的次數(shù),然后決定使用允許操作繼續(xù),或者立即返回錯誤。

熔斷器開關相互轉換的邏輯如下圖:

Hystrix怎么在springcloud中使用

熔斷器就是保護服務高可用的最后一道防線。

Hystrix特性

1.斷路器機制

斷路器很好理解, 當Hystrix Command請求后端服務失敗數(shù)量超過一定比例(默認50%), 斷路器會切換到開路狀態(tài)(Open). 這時所有請求會直接失敗而不會發(fā)送到后端服務. 斷路器保持在開路狀態(tài)一段時間后(默認5秒), 自動切換到半開路狀態(tài)(HALF-OPEN). 這時會判斷下一次請求的返回情況, 如果請求成功, 斷路器切回閉路狀態(tài)(CLOSED), 否則重新切換到開路狀態(tài)(OPEN). Hystrix的斷路器就像我們家庭電路中的保險絲, 一旦后端服務不可用, 斷路器會直接切斷請求鏈, 避免發(fā)送大量無效請求影響系統(tǒng)吞吐量, 并且斷路器有自我檢測并恢復的能力.

2.Fallback

Fallback相當于是降級操作. 對于查詢操作, 我們可以實現(xiàn)一個fallback方法, 當請求后端服務出現(xiàn)異常的時候, 可以使用fallback方法返回的值. fallback方法的返回值一般是設置的默認值或者來自緩存.

3.資源隔離

在Hystrix中, 主要通過線程池來實現(xiàn)資源隔離. 通常在使用的時候我們會根據調用的遠程服務劃分出多個線程池. 例如調用產品服務的Command放入A線程池, 調用賬戶服務的Command放入B線程池. 這樣做的主要優(yōu)點是運行環(huán)境被隔離開了. 這樣就算調用服務的代碼存在bug或者由于其他原因導致自己所在線程池被耗盡時, 不會對系統(tǒng)的其他服務造成影響. 但是帶來的代價就是維護多個線程池會對系統(tǒng)帶來額外的性能開銷. 如果是對性能有嚴格要求而且確信自己調用服務的客戶端代碼不會出問題的話, 可以使用Hystrix的信號模式(Semaphores)來隔離資源.

Feign Hystrix

因為熔斷只是作用在服務調用這一端,因此我們根據上一篇的示例代碼只需要改動spring-cloud-consumer項目相關代碼就可以。因為,F(xiàn)eign中已經依賴了Hystrix所以在maven配置上不用做任何改動。

1、配置文件

application.properties添加這一條:

feign.hystrix.enabled=true

2、創(chuàng)建回調類

創(chuàng)建HelloRemoteHystrix類繼承與HelloRemote實現(xiàn)回調的方法

@Component
public class HelloRemoteHystrix implements HelloRemote{

  @Override
  public String hello(@RequestParam(value = "name") String name) {
    return "hello" +name+", this messge send failed ";
  }
}

3、添加fallback屬性

在HelloRemote類添加指定fallback類,在服務熔斷的時候返回fallback類中的內容。

@FeignClient(name= "spring-cloud-producer",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {

  @RequestMapping(value = "/hello")
  public String hello(@RequestParam(value = "name") String name);

}

改動點就這點,很簡單吧。

4、測試

那我們就來測試一下看看效果吧。

依次啟動spring-cloud-eureka、spring-cloud-producer、spring-cloud-consumer三個項目。

瀏覽器中輸入:http://localhost:9001/hello/neo

返回:hello neo,this is first messge

說明加入熔斷相關信息后,不影響正常的訪問。接下來我們手動停止spring-cloud-producer項目再次測試:

瀏覽器中輸入:http://localhost:9001/hello/neo

返回:hello neo, this messge send failed

關于Hystrix怎么在springcloud中使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。


網頁標題:Hystrix怎么在springcloud中使用
路徑分享:http://weahome.cn/article/igihch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部