Hystrix介紹以及服務(wù)的降級限流熔斷

介紹

首先在這里給粉絲道個歉,由于這一段時間比較忙境析,沒有更新大數(shù)據(jù),因為項目上用到了Spring cloud派诬,所以在以后的日子里劳淆,會將Spring cloud納入更新的范疇,好了默赂,言歸正傳沛鸵。
據(jù)我了解,現(xiàn)在市面上比較成熟的分布式框架有兩種缆八,要么采用dubbo曲掰,要么采用Spring cloud疾捍,之前的項目用的是dubbo,之后也會將dubbo的簡單介紹一下栏妖,這里的主角是Spring cloud乱豆,至于他們兩個的區(qū)別,這個網(wǎng)上都有底哥,主要的一點就是如果使用dubbo咙鞍,像這些服務(wù)的降級限流熔斷,監(jiān)控趾徽,鏈路跟蹤等等,只能說自己搞翰守,dubbo沒有集成孵奶,阿里支付寶用的dubbo,淘寶用的Spring cloud蜡峰,在網(wǎng)上找了一個圖了袁,供大家參考


dubbo和spring cloud區(qū)別

服務(wù)降級限流熔斷

在進入正題之前,有個問題湿颅,分布式系統(tǒng)中肯定會遇到服務(wù)雪崩效應载绿,這個服務(wù)雪崩效應是什么呢?
下面這幅圖可以說明這個問題


服務(wù)雪崩圖

商品詳情展示服務(wù)會依賴商品服務(wù)油航, 價格服務(wù)崭庸,商品評論服務(wù),調(diào)用三個依賴服務(wù)會共享商品詳情服務(wù)的線程池怕享,如果其中的商品評論服務(wù)不可用(超時,代碼異常等等), 就會出現(xiàn)線程池里所有線程都因等待響應而被阻塞, 從而造成服務(wù)雪崩镰踏。
概況一下就是:因服務(wù)提供者的不可用導致服務(wù)調(diào)用者的不可用函筋,并將不可用逐漸放大的過程,就叫服務(wù)雪崩效應奠伪,這句話應該很好理解跌帐,就不過多的解釋了。
到這里就知道了雪崩的原因是服務(wù)提供者的不可用導致的绊率,那么什么是導致服務(wù)提供者的不可用呢谨敛?無非就這么幾點:大流量請求(高并發(fā)),提供者硬件問題即舌,緩存擊穿佣盒,程序的bug,超時等等
到這里想想怎么解決顽聂?第一個想到的就是肥惭,重試盯仪,當服務(wù)的提供方不可用時,重試無形中增加了提供方的壓力蜜葱,所以重試不可取全景。
到這里瓶頸了,再想想是不是哪里有問題牵囤,服務(wù)雪崩的根本原因到底是什么爸黄?
應該是:

大量請求線程同步等待造成的資源耗盡

當服務(wù)調(diào)用者使用同步調(diào)用的時候,會產(chǎn)生大量的等待線程占用系統(tǒng)資源揭鳞,一旦線程資源被耗盡炕贵,
服務(wù)調(diào)用者提供的服務(wù)也將處于不可用狀態(tài),于是服務(wù)雪崩效應產(chǎn)生了野崇!

知道了根本原因称开,問題來了,怎么解決呢乓梨?這里才入正題鳖轰,是不是引子有些長?

解決方案

1扶镀,超時機制
2蕴侣,服務(wù)限流
3,服務(wù)熔斷
4臭觉,服務(wù)降級

超時機制

如果我們加入超時機制昆雀,例如2s,那么超過2s就會直接返回了胧谈,那么這樣就在一定程度上可以抑制消費者資源耗盡的問題

服務(wù)限流

通過線程池+隊列的方式忆肾,通過信號量的方式。比如商品評論比較慢菱肖,最大能同時處理10個線程客冈,隊列待處理5個,那么如果同時20個線程到達的話稳强,其中就有5個線程被限流了场仲,其中10個先被執(zhí)行,另外5個在隊列中

服務(wù)熔斷

這個熔斷可以理解為我們自己家里的電閘退疫。
當依賴的服務(wù)有大量超時時渠缕,在讓新的請求去訪問根本沒有意義,只會無畏的消耗現(xiàn)有資源褒繁,比如我們設(shè)置了超時時間為1s亦鳞,如果短時間內(nèi)有大量請求在1s內(nèi)都得不到響應,就意味著這個服務(wù)出現(xiàn)了異常,此時就沒有必要再讓其他的請求去訪問這個服務(wù)了燕差,這個時候就應該使用熔斷器避免資源浪費

服務(wù)降級

有服務(wù)熔斷遭笋,必然要有服務(wù)降級。
所謂降級徒探,就是當某個服務(wù)熔斷之后瓦呼,服務(wù)將不再被調(diào)用,此時客戶端可以自己準備一個本地的fallback(回退)回調(diào)测暗,返回一個缺省值央串。 例如:(備用接口/緩存/mock數(shù)據(jù)),這樣做碗啄,雖然服務(wù)水平下降质和,但好歹可用,比直接掛掉要強稚字,當然這也要看適合的業(yè)務(wù)場景

寫個小demo

git地址:https://github.com/11078334334/hystrix
https://github.com/11078334334/user-service
https://github.com/11078334334/eureka
一定要下載看看代碼

線程數(shù)配置

在UserFeignClient類中侦另,需要解釋一下,F(xiàn)eign整合hystrix和ribbon整合hystrix有一些區(qū)別尉共,因為Feign應用比ribbon廣泛,只寫出Feign整合hystrix的demo


image.png
1,fallback = FeignClientFallback.class這個來告訴Feign弃锐,如果接口超時袄友,異常,降級方法在哪里霹菊,就在FeignClientFallback這個class類中
2剧蚣,對應的方法就和調(diào)用的方法名完全一致
3,降級方法中最好不要寫過多的業(yè)務(wù)邏輯旋廷,防止降級方法出錯

運行起來之后鸠按,用jmeter進行壓測
1,配置接口


image.png

2饶碘,一次性發(fā)起10個并發(fā)目尖,發(fā)起1次


image.png

3,執(zhí)行結(jié)果
結(jié)果
image.png

上面這個是線程池滿的情況扎运,也可以測試服務(wù)提供者宕機的情況瑟曲,也會執(zhí)行降級方法,這里就不再演示豪治。
畫了一下hystrix熔斷器的執(zhí)行過程洞拨,如圖


image.png

好了,就到了里负拟,望指正烦衣,不吝賜教

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子花吟,更是在濱河造成了極大的恐慌秸歧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件示辈,死亡現(xiàn)場離奇詭異寥茫,居然都是意外死亡,警方通過查閱死者的電腦和手機矾麻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門纱耻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人险耀,你說我怎么就攤上這事弄喘。” “怎么了甩牺?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵蘑志,是天一觀的道長。 經(jīng)常有香客問我贬派,道長急但,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任搞乏,我火速辦了婚禮波桩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘请敦。我一直安慰自己镐躲,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布侍筛。 她就那樣靜靜地躺著萤皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匣椰。 梳的紋絲不亂的頭發(fā)上裆熙,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音窝爪,去河邊找鬼弛车。 笑死,一個胖子當著我的面吹牛蒲每,可吹牛的內(nèi)容都是我干的纷跛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼邀杏,長吁一口氣:“原來是場噩夢啊……” “哼贫奠!你這毒婦竟也來了唬血?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤唤崭,失蹤者是張志新(化名)和其女友劉穎拷恨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谢肾,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡腕侄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了芦疏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冕杠。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖酸茴,靈堂內(nèi)的尸體忽然破棺而出分预,到底是詐尸還是另有隱情,我是刑警寧澤薪捍,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布笼痹,位于F島的核電站,受9級特大地震影響酪穿,放射性物質(zhì)發(fā)生泄漏凳干。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一被济、第九天 我趴在偏房一處隱蔽的房頂上張望纺座。 院中可真熱鬧,春花似錦溉潭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赞别,卻和暖如春畏陕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仿滔。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工惠毁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崎页。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓鞠绰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親飒焦。 傳聞我的和親對象是個殘疾皇子蜈膨,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容