[JavaEE] SpringCloud集成Hystrix服務(wù)保護

前文鏈接

[JavaEE] 搭建SpringCloud環(huán)境 進入微服務(wù)時代
http://www.reibang.com/p/a0365a635975
溫馨提示:本文是基于前文的擴展 沒有基礎(chǔ)的新手可以先去學(xué)習(xí)上文

一.簡介

Hystrix是一套完善的服務(wù)保護組件, 可以實現(xiàn)服務(wù)降級, 服務(wù)熔斷, 服務(wù)隔離等保護措施 使用它可以合理的應(yīng)對高并發(fā)的情況 做到保護服務(wù)的效果

二.發(fā)現(xiàn)問題

有人可能會問 為什么要使用服務(wù)保護功能呢? 我的服務(wù)器明明跑的很好的... 好的 那這里 我就舉個例子來說明一下 為什么要進行服務(wù)保護 設(shè)想這樣一種情況 你的服務(wù)器由于用戶量訪問過大 而癱瘓 這樣的例子不在少數(shù) 比如某寶雙11活動或是12306過年搶票 都導(dǎo)致過網(wǎng)站崩潰 有的是不能進行訪問, 有的是在那里一直轉(zhuǎn)圈加載, 這樣做顯然是有問題的, 因為用戶根本不知道你出了什么事, 春運是國人心中的大事, 不能買票更是讓人心不安

我們現(xiàn)在就來模擬一下這種狀況 這里使用阿帕奇的JMeter來做壓力測試 我在service-a中把延時調(diào)整為5秒

然后我們訪問一下接口 發(fā)現(xiàn)5秒之后可以順利的返回數(shù)據(jù)

之后我們使用JMeter開1000個線程來訪問這個接口

之后我們訪問接口

我們發(fā)現(xiàn)服務(wù)10秒之后都無法訪問 證明服務(wù)已經(jīng)崩了 - -

之后我們再來看一個現(xiàn)象
我們在service-a中加入一個接口

@RequestMapping("/otherService")
    public String otherService() {
        return "我是其他服務(wù)";
    }

然后重新運行服務(wù) 我們再次對hello接口做壓力測試


不幸的是你會發(fā)現(xiàn)otherService服務(wù)也無法訪問了 - -
到這里你可能會問 我壓力測試的接口是hello 為什么otherService接口也會崩潰呢? 這種現(xiàn)象就叫做服務(wù)器的雪崩效應(yīng), 因為tomcat啟動之后會創(chuàng)建一個線程池來處理用戶請求, 而線程池中的線程是有限的, 當超出承載的最大請求數(shù)量時, 那用戶的請求可就要開始排隊了, 所以就會出現(xiàn)一直轉(zhuǎn)圈的情況, 所以雖然訪問的是hello接口 但是他們兩個是用了同一個線程池 所以都受到了影響

那我們要如何解決這個問題呢?

三.集成Hystrix

沒錯 接下來我們就要使用這篇文章開始就提到的服務(wù)保護來解決問題了, 我們使用服務(wù)隔離機制就可以輕松的解決服務(wù)雪崩效應(yīng) 下面跟著我們的鏡頭一起來看吧!

一共分三步
1.導(dǎo)入Maven依賴
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
</dependencies>
2.在程序入口開啟@EnableHystrix
3.在接口上開啟Hystrix服務(wù)保護

然后重新運行服務(wù) 我們來看看效果

我們發(fā)現(xiàn)沒有開啟壓力測試接口仍為服務(wù)器繁忙 所以這里我們要進行一個配置 在application.yml中設(shè)置

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

這個配置的含義是忽略hystrix的超時時間 因為我們服務(wù)器配置延時5秒 hystrix默認就執(zhí)行了fallback

之后我們再次運行服務(wù) 發(fā)現(xiàn)可以正常訪問了


之后我們對這個接口做壓力測試 看另外的服務(wù)是否會受到影響


我們可以看到 做壓力測試之后hello 這個接口返回了我們設(shè)置好的 服務(wù)器繁忙 而另一個otherService接口正常運行 這就是所謂的服務(wù)隔離機制 原理就是把hello接口放入了hystrix自己創(chuàng)建的線程池里面 使主線程池不受到影響 不過開啟服務(wù)保護需要消耗大量的CPU 所以只需要在高并發(fā)的接口上使用就可以了

我們在例子中可以看到 以前開啟壓力測試后的步驟是:

開啟hystrix前

1.壓力測試
2.訪問hello接口
3.一直轉(zhuǎn)圈

開啟hystrix后

1.壓力測試
2.訪問hello接口
3.提示:服務(wù)器繁忙

當服務(wù)器無法處理服務(wù) 返回用戶一個比較友好的提示 服務(wù)器繁忙 這種功能就叫做服務(wù)降級, 而在服務(wù)降級之后 系統(tǒng)是不會再跳入這個接口了 直接執(zhí)行了fallback 這種現(xiàn)象就叫做服務(wù)熔斷, 熔斷了hello執(zhí)行了fallback, 這個解釋夠明白吧, 可以參考保險絲來理解, 當家庭電器短路之后, 家里的保險絲會熔斷, 斷開電源來保證不會發(fā)生火災(zāi).

四.Demo

https://github.com/objcat/test-spring-cloud-demo.git

finally enjoy it.

by objcat 2018.11.22

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末还蹲,一起剝皮案震驚了整個濱河市琴昆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啃擦,老刑警劉巖格带,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撤缴,死亡現(xiàn)場離奇詭異,居然都是意外死亡践惑,警方通過查閱死者的電腦和手機腹泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門嘶卧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尔觉,“玉大人,你說我怎么就攤上這事芥吟≌焱” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵钟鸵,是天一觀的道長钉稍。 經(jīng)常有香客問我,道長棺耍,這世上最難降的妖魔是什么贡未? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蒙袍,結(jié)果婚禮上俊卤,老公的妹妹穿的比我還像新娘。我一直安慰自己害幅,他們只是感情好消恍,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著以现,像睡著了一般狠怨。 火紅的嫁衣襯著肌膚如雪约啊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天佣赖,我揣著相機與錄音恰矩,去河邊找鬼。 笑死憎蛤,一個胖子當著我的面吹牛枢里,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹂午,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼栏豺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奥洼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晚胡,失蹤者是張志新(化名)和其女友劉穎灵奖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體估盘,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瓷患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遣妥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擅编。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箫踩,靈堂內(nèi)的尸體忽然破棺而出爱态,到底是詐尸還是另有隱情,我是刑警寧澤境钟,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布锦担,位于F島的核電站,受9級特大地震影響慨削,放射性物質(zhì)發(fā)生泄漏洞渔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一缚态、第九天 我趴在偏房一處隱蔽的房頂上張望磁椒。 院中可真熱鬧,春花似錦猿规、人聲如沸衷快。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蘸拔。三九已至师郑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間调窍,已是汗流浹背宝冕。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邓萨,地道東北人地梨。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像缔恳,于是被迫代替她去往敵國和親宝剖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

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