6 SpringCloud中熔斷器:Hystrix

先理解幾個(gè)定義:
服務(wù)雪崩效應(yīng):是一種因服務(wù)提供者的不可用導(dǎo)致服務(wù)調(diào)用者的不可用,并將不可用逐漸放大的過程失仁。
雪崩原因:

  1. 服務(wù)提供者不可用
  • a们何、硬件故障

    • 硬件損壞造成的服務(wù)器主機(jī)宕機(jī)
    • 網(wǎng)絡(luò)硬件故障造成的服務(wù)提供者的不可訪問
  • b冤竹、程序Bug

  • c、緩存擊穿:緩存應(yīng)用重啟, 所有緩存被清空時(shí),以及短時(shí)間內(nèi)大量緩存失效時(shí). 大量的緩存不命中, 使請(qǐng)求直擊后端,造成服務(wù)提供者超負(fù)荷運(yùn)行,引起服務(wù)不可用

  • d烘苹、用戶大量請(qǐng)求:在秒殺和大促開始前,如果準(zhǔn)備不充分,用戶發(fā)起大量請(qǐng)求造成服務(wù)提供者的不可用

解決方案,太多了,開濤大神的《億級(jí)流量》就有好多應(yīng)對(duì)策略廊鸥。
還是回歸正傳用Hystrix去惰说,
一般通過 超時(shí)機(jī)制, 熔斷器 和熔斷后的 降級(jí)方法 來實(shí)現(xiàn)缘回。而Hystrix就一個(gè)可以預(yù)防服務(wù)雪崩酥宴,解決分布式系統(tǒng)交互時(shí)超時(shí)處理和容錯(cuò)的類庫。
這里就簡(jiǎn)單使用授滓,在上面的Feign項(xiàng)目中再加一個(gè)模塊hystrix肆糕。
代碼就是復(fù)制feign模塊诚啃。
添加依賴

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>

然后修改HelloService,加上一個(gè)fallback噩咪,當(dāng)服務(wù)不可用時(shí)胃碾,調(diào)用ErrorHelloService筋搏,

@FeignClient(value = "service-hi",fallback = ErrorHelloService.class)

自定義一個(gè)ErrorHelloService類奔脐,繼承HelloService,上面要加上@Component峦朗,注入spring

@Component
public class ErrorHelloService implements HelloService {
    @Override
    public String callClientOne(String name) {
        return "sorry "+name;
    }
}

其他都一樣波势,然后運(yùn)行這個(gè)項(xiàng)目,注意拴曲,現(xiàn)在server凛忿,client都沒有起來
然后訪問 http://localhost:8765/hi?name=lijia
會(huì)輸出剛剛定義的ErrorHelloService的信息sorry lijia店溢。這樣就實(shí)現(xiàn)了如果服務(wù)不可用也不會(huì)造成雪崩效應(yīng)床牧。
然后啟動(dòng)server,client驹马,再次訪問 http://localhost:8765/hi?name=lijia


上面是在Feign項(xiàng)目中加上Hystrix糯累,在Ribbon中呢册踩。

用的是Ribbon的項(xiàng)目暂吉,和上面一樣。加個(gè)hystrix模塊阎肝,代碼復(fù)制ribbon的肮街。
添加依賴

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>

修改啟動(dòng)類AppHystrix添加@EnableHystrix注解嫉父。
然后修改HelloService绕辖,在調(diào)用的方法上面加上@HystrixCommand(fallbackMethod = "hiError"),fallbackMethod中定義如果服務(wù)不可用的方法围小。


然后啟動(dòng)吩抓。效果在啟動(dòng)server和client前后是有區(qū)別的疹娶。

還有一個(gè)Hystrix Dashboard
在Ribbon項(xiàng)目的hystrix中加上依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    </dependency>

然后在啟動(dòng)類中加上@EnableHystrixDashboard


啟動(dòng)類雨饺,然后訪問 http://localhost:8764/hystrix
會(huì)進(jìn)入

輸入要調(diào)用的服務(wù),點(diǎn)擊Monitor Stream,進(jìn)入hystrix Monitor 惑淳,由于我的server和client未啟動(dòng)额港,會(huì)出現(xiàn)

然后啟動(dòng)server,client歧焦,得等一會(huì)移斩,不到一分鐘,具體以后再看绢馍。
首先訪問 http://localhost:8764/hi?name=lijia

然后在hystrix dashboard中輸入 http://localhost:8764/hystrix.stream


進(jìn)去之后會(huì)發(fā)現(xiàn)一些監(jiān)控?cái)?shù)據(jù)

ribbon代碼放在 https://github.com/lijiaccy/springcloud-study/tree/master/eurefa-Ribbon
feign代碼放在 https://github.com/lijiaccy/springcloud-study/tree/master/eurefa-Feign

參考 http://blog.csdn.net/forezp/article/details/69934399

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末向瓷,一起剝皮案震驚了整個(gè)濱河市舰涌,隨后出現(xiàn)的幾起案子猖任,更是在濱河造成了極大的恐慌,老刑警劉巖瓷耙,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朱躺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搁痛,警方通過查閱死者的電腦和手機(jī)长搀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸡典,“玉大人盈滴,你說我怎么就攤上這事〗文疲” “怎么了巢钓?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)疗垛。 經(jīng)常有香客問我症汹,道長(zhǎng),這世上最難降的妖魔是什么贷腕? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任背镇,我火速辦了婚禮咬展,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞒斩。我一直安慰自己破婆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布胸囱。 她就那樣靜靜地躺著祷舀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烹笔。 梳的紋絲不亂的頭發(fā)上裳扯,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音谤职,去河邊找鬼饰豺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛允蜈,可吹牛的內(nèi)容都是我干的冤吨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饶套,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼锅很!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凤跑,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤爆安,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后仔引,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扔仓,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年咖耘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翘簇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儿倒,死狀恐怖版保,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夫否,我是刑警寧澤彻犁,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站凰慈,受9級(jí)特大地震影響汞幢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜微谓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一森篷、第九天 我趴在偏房一處隱蔽的房頂上張望输钩。 院中可真熱鬧,春花似錦仲智、人聲如沸买乃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪验。三九已至,卻和暖如春岩馍,著一層夾襖步出監(jiān)牢的瞬間碉咆,已是汗流浹背抖韩。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蛀恩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茂浮。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓双谆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親席揽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顽馋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)幌羞,斷路器寸谜,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 我們這次主要講4件事: 1. 什么是微服務(wù)? 什么是 springcloud? 引用維基百科: 微服務(wù)是一種架構(gòu)風(fēng)...
    莫那一魯?shù)?/span>閱讀 2,757評(píng)論 0 3
  • (git上的源碼:https://gitee.com/rain7564/spring_microservices_...
    sprainkle閱讀 9,350評(píng)論 13 33
  • 原理 在微服務(wù)架構(gòu)中,服務(wù)之間形成調(diào)用鏈路属桦,鏈路中的任何一個(gè)服務(wù)提供者都可能面臨著相應(yīng)超時(shí)熊痴、宕機(jī)等不可用的情況,在...
    billJiang閱讀 3,269評(píng)論 0 2
  • 今天和宇都宮文星女子高級(jí)中學(xué)進(jìn)行了交流聂宾,他們的合唱隊(duì)非常不錯(cuò)果善,而且演奏部紀(jì)律十分嚴(yán)格,中午與同學(xué)們進(jìn)行了親切的交流...
    蔡皓天閱讀 302評(píng)論 0 0