国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - springcloud 熔斷器Hystrix的具體使用

springcloud 熔斷器Hystrix的具體使用

2021-03-30 11:33純潔的微笑 Java教程

本篇文章主要介紹了springcloud 熔斷器Hystrix的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

說起springcloud熔斷讓我想起了去年股市中的熔斷,多次痛的領(lǐng)悟,隨意實施的熔斷對整個系統(tǒng)的影響是災(zāi)難性的,好了接下來我們還是說正事。

熔斷器

雪崩效應(yīng)

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

如果下圖所示:a作為服務(wù)提供者,b為a的服務(wù)消費者,c和d是b的服務(wù)消費者。a不可用引起了b的不可用,并將不可用像滾雪球一樣放大到c和d時,雪崩效應(yīng)就形成了。

springcloud 熔斷器Hystrix的具體使用

熔斷器(circuitbreaker)

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

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

熔斷器開關(guān)相互轉(zhuǎn)換的邏輯如下圖:

springcloud 熔斷器Hystrix的具體使用

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

hystrix特性

1.斷路器機制

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

2.fallback

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

3.資源隔離

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

feign hystrix

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

1、配置文件

application.properties添加這一條:

?
1
feign.hystrix.enabled=true

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

創(chuàng)建helloremotehystrix類繼承與helloremote實現(xiàn)回調(diào)的方法

?
1
2
3
4
5
6
7
8
@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類,在服務(wù)熔斷的時候返回fallback類中的內(nèi)容。

?
1
2
3
4
5
6
7
@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

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

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

返回:hello neo, this messge send failed

根據(jù)返回結(jié)果說明熔斷成功。

示例代碼

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.ityouknow.com/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费电影一区 | 日本不卡免费新一二三区 | 中国黄色毛片 大片 | 欧美一级二级视频 | 91日韩精品一区二区三区 | 日韩av中文字幕在线播放 | 欧美性猛交一区二区三区精品 | 欧美日韩综合一区 | 男人的天堂亚洲 | 天天爱天天操 | 国产一区二区精品在线观看 | 国内精品久久久久 | 国产欧美综合一区二区三区 | 亚洲欧美综合精品久久成人 | av小说在线观看 | 九九热九九 | 日韩欧美一级片 | av电影免费在线 | 黄视频在线免费看 | 久久久久久国产精品高清 | 自拍偷拍亚洲欧美 | 一区二区三区精品视频 | 久草成人 | 毛片网免费| 欧美成人免费在线视频 | 欧美一区二区三区电影 | 亚洲情综合五月天 | 婷婷色国产偷v国产偷v小说 | 欧美一区二区三区视频在线观看 | 国产精品爱久久久久久久 | 日本在线不卡视频 | 国产免费久久 | 国内精品视频在线观看 | 欧美成人精品在线 | 一区二区三区久久 | 国色天香成人网 | 欧美视频免费 | 亚洲综合在线视频 | 日韩精品第一页 | 91在线影院| 成人黄色免费在线视频 |