java Spring Cloud,核心組件:Hystrix

在微服務(wù)架構(gòu)里蝇裤,一個系統(tǒng)會有很多的服務(wù)巧勤。以本文的業(yè)務(wù)場景為例:訂單服務(wù)在一個業(yè)務(wù)流程里需要調(diào)用三個服務(wù)。現(xiàn)在假設(shè)訂單服務(wù)自己最多只有100個線程可以處理請求拣凹,然后呢,積分服務(wù)不幸的掛了恨豁,每次訂單服務(wù)調(diào)用積分服務(wù)的時候嚣镜,都會卡住幾秒鐘,然后拋出—個超時異常圣絮。

咱們一起來分析一下祈惶,這樣會導(dǎo)致什么問題雕旨?

如果系統(tǒng)處于高并發(fā)的場景下扮匠,大量請求涌過來的時候,訂單服務(wù)的100個線程都會卡在請求積分服務(wù)這塊凡涩。導(dǎo)致訂單服務(wù)沒有一個線程可以處理請求棒搜。然后就會導(dǎo)致別人請求訂單服務(wù)的時候,發(fā)現(xiàn)訂單服務(wù)也掛了活箕,不響應(yīng)任何請求了

上面這個力麸,就是微服務(wù)架構(gòu)中恐怖的服務(wù)雪崩問題,如下圖所示:

如上圖育韩,這么多服務(wù)互相調(diào)用克蚂,要是不做任何保護(hù)的話,某一個服務(wù)掛了筋讨,就會引起連鎖反應(yīng)埃叭,導(dǎo)致別的服務(wù)也掛。比如積分服務(wù)掛了悉罕,會導(dǎo)致訂單服務(wù)的線程全部卡在請求積分服務(wù)這里赤屋,沒有一個線程可以工作,瞬間導(dǎo)致訂單服務(wù)也掛了壁袄,別人請求訂單服務(wù)全部會卡住类早,無法響應(yīng)。

但是我們思考一下嗜逻,就算積分服務(wù)掛了涩僻,訂單服務(wù)也可以不用掛啊栈顷!為什么令哟?

(1)我們結(jié)合業(yè)務(wù)來看:支付訂單的時候,只要把庫存扣減了妨蛹,然后通知倉庫發(fā)貨就OK了

(2)如果積分服務(wù)掛了屏富,大不了等他恢復(fù)之后,慢慢人肉手工恢復(fù)數(shù)據(jù)蛙卤!為啥一定要因為一個積分服務(wù)掛了狠半,就直接導(dǎo)致訂單服務(wù)也掛了呢噩死?不可以接受!

現(xiàn)在問題分析完了神年,如何解決已维?

這時就輪到Hystrix閃亮登場了。Hystrix是隔離已日、熔斷以及降級的一個框架垛耳。啥意思呢?說白了飘千,Hystrix會搞很多個小小的線程池堂鲜,比如訂單服務(wù)請求庫存服務(wù)是一個線程池,請求倉儲服務(wù)是一個線程池护奈,請求積分服務(wù)是一個線程池缔莲。每個線程池里的線程就僅僅用于請求那個服務(wù)。

打個比方:現(xiàn)在很不幸霉旗,積分服務(wù)掛了痴奏,會咋樣?

當(dāng)然會導(dǎo)致訂單服務(wù)里的那個用來調(diào)用積分服務(wù)的線程都卡死不能工作了把崦搿读拆!但是由于訂單服務(wù)調(diào)用庫存服務(wù)、倉儲服務(wù)的這兩個線程池都是正常工作的鸵闪,所以這兩個服務(wù)不會受到任何影響。

這個時候如果別人請求訂單服務(wù)岛马,訂單服務(wù)還是可以正常調(diào)用庫存服務(wù)扣減庫存棉姐,調(diào)用倉儲服務(wù)通知發(fā)貨。只不過調(diào)用積分服務(wù)的時候啦逆,每次都會報錯伞矩。但是如果積分服務(wù)都掛了,每次調(diào)用都要去卡住幾秒鐘干啥呢夏志?有意義嗎乃坤?當(dāng)然沒有!所以我們直接對積分服務(wù)熔斷不就得了沟蔑,比如在5分鐘內(nèi)請求積分服務(wù)直接就返回了湿诊,不要去走網(wǎng)絡(luò)請求卡住幾秒鐘,這個過程瘦材,就是所謂的熔斷厅须!

那人家又說,兄弟食棕,積分服務(wù)掛了你就熔斷朗和,好歹你干點兒什么按砉痢!別啥都不干就直接返回翱衾千埃?沒問題,咱們就來個降級:每次調(diào)用積分服務(wù)忆植,你就在數(shù)據(jù)庫里記錄一條消息放可,說給某某用戶增加了多少積分,因為積分服務(wù)掛了朝刊,導(dǎo)致沒增加成功耀里!這樣等積分服務(wù)恢復(fù)了,你可以根據(jù)這些記錄手工加一下積分坞古。這個過程备韧,就是所謂的降級劫樟。

為幫助大家更直觀的理解痪枫,接下來用一張圖,梳理一下Hystrix隔離叠艳、熔斷和降級的全流程:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奶陈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子附较,更是在濱河造成了極大的恐慌吃粒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拒课,死亡現(xiàn)場離奇詭異徐勃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)早像,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門僻肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卢鹦,你說我怎么就攤上這事臀脏。” “怎么了冀自?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵揉稚,是天一觀的道長。 經(jīng)常有香客問我熬粗,道長搀玖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任驻呐,我火速辦了婚禮灌诅,結(jié)果婚禮上葛超,老公的妹妹穿的比我還像新娘。我一直安慰自己延塑,他們只是感情好绣张,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著关带,像睡著了一般侥涵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宋雏,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天芜飘,我揣著相機(jī)與錄音,去河邊找鬼磨总。 笑死嗦明,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚪燕。 我是一名探鬼主播娶牌,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼馆纳!你這毒婦竟也來了诗良?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤鲁驶,失蹤者是張志新(化名)和其女友劉穎鉴裹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钥弯,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡径荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脆霎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片总处。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绪穆,靈堂內(nèi)的尸體忽然破棺而出辨泳,到底是詐尸還是另有隱情,我是刑警寧澤玖院,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布菠红,位于F島的核電站,受9級特大地震影響难菌,放射性物質(zhì)發(fā)生泄漏试溯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一郊酒、第九天 我趴在偏房一處隱蔽的房頂上張望遇绞。 院中可真熱鬧键袱,春花似錦、人聲如沸摹闽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽付鹿。三九已至澜汤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舵匾,已是汗流浹背俊抵。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留坐梯,地道東北人徽诲。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像吵血,于是被迫代替她去往敵國和親谎替。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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