spring cloud微服務(wù)架構(gòu)(二):雪崩效應(yīng)與Hystrix基本原理

1 雪崩效應(yīng)

簡(jiǎn)單是來說,在分布式系統(tǒng)中沼本,假如有一個(gè)請(qǐng)求需要調(diào)用A服務(wù),但A服務(wù)出現(xiàn)了問題锭沟,則這個(gè)請(qǐng)求就會(huì)阻塞抽兆,那么只要調(diào)用服務(wù)A的請(qǐng)求都會(huì)阻塞,當(dāng)阻塞的請(qǐng)求越來越多族淮,占用的計(jì)算機(jī)資源就越來越多辫红。進(jìn)一步來說,就是一個(gè)服務(wù)出現(xiàn)問題祝辣,可能導(dǎo)致所有的請(qǐng)求都不可用贴妻,從而導(dǎo)致整個(gè)分布式系統(tǒng)都不可用,這就是“雪崩效應(yīng)”蝙斜。

image.png

如果要是考慮服務(wù)與服務(wù)之間的依賴關(guān)系名惩,則連帶作用更強(qiáng),系統(tǒng)崩壞的速度更快孕荠!

舉例來說:火車購(gòu)票系統(tǒng)提供兩種服務(wù)娩鹉,查票服務(wù)和訂票服務(wù)

  1. 如果不考慮兩個(gè)服務(wù)之間的依賴關(guān)系:查票服務(wù)出現(xiàn)問題,則查票的請(qǐng)求全部阻塞稚伍,占用大量的系統(tǒng)資源弯予,久而久之,導(dǎo)致整個(gè)系統(tǒng)無法響應(yīng)請(qǐng)求
  2. 如果考慮依賴關(guān)系:訂票服務(wù)依賴查票服務(wù)槐瑞,查票服務(wù)出現(xiàn)問題熙涤,不僅僅查票的請(qǐng)求會(huì)全部阻塞,訂票的服務(wù)也會(huì)阻塞,整個(gè)系統(tǒng)迅速崩壞祠挫!

2 Hystrix如何去解決雪崩

2.1 隔離技術(shù)

例如那槽,貨船為了進(jìn)行防止漏水和火災(zāi)的擴(kuò)散,會(huì)將貨倉分隔為多個(gè),如下圖所示:

image.png
  • 線程池隔離

例如等舔,淘寶的一個(gè)商品頁面至少包含三方面信息骚灸,商品基本信息、商品價(jià)格慌植、買家評(píng)論甚牲。一個(gè)商品頁面的請(qǐng)求依賴于三個(gè)服務(wù),基本信息服務(wù)A蝶柿、價(jià)格服務(wù)B丈钙、評(píng)論服務(wù)C。因?yàn)槭且粋€(gè)請(qǐng)求(線程)調(diào)用三個(gè)服務(wù)交汤,調(diào)用順序?yàn)椋篈->B->C雏赦,如果其中A服務(wù)出現(xiàn)問題,則另外兩個(gè)服務(wù)都無法調(diào)用芙扎;如果B服務(wù)出現(xiàn)問題星岗,則C服務(wù)無法調(diào)用〗渫荩【橫向調(diào)用】

image.png

線程隔離主要解決的問題就是俏橘,A、B圈浇、C服務(wù)之間無調(diào)用順序的限制寥掐,不論哪個(gè)服務(wù)出現(xiàn)問題,都不會(huì)影響其他服務(wù)的調(diào)用磷蜀。但是前提是A曹仗、B、C服務(wù)之間相互獨(dú)立蠕搜。基本原理是,為每個(gè)服務(wù)維護(hù)一個(gè)線程池收壕,用戶的請(qǐng)求將不再直接訪問服務(wù)妓灌,而是通過線程池中的空閑線程來訪問服務(wù)。【縱向調(diào)用】

image.png
  • 信號(hào)量隔離

該隔離技術(shù)蜜宪,是限制某個(gè)服務(wù)的并發(fā)數(shù)量虫埂,對(duì)服務(wù)的并發(fā)數(shù)量設(shè)置一個(gè)閾值,超過該閾值則服務(wù)暫停接受新的請(qǐng)求圃验。

2.2 熔斷機(jī)制

如果某個(gè)目標(biāo)服務(wù)調(diào)用慢或者有大量超時(shí)掉伏,如5秒內(nèi)20次調(diào)用失敗,此時(shí),熔斷該服務(wù)的調(diào)用斧散,對(duì)于后續(xù)調(diào)用請(qǐng)求供常,不在繼續(xù)調(diào)用目標(biāo)服務(wù),直接返回鸡捐,快速釋放資源栈暇。如果目標(biāo)服務(wù)情況好轉(zhuǎn)則恢復(fù)調(diào)用。熔斷機(jī)制在Hystrix中箍镜,位于隔離技術(shù)之前源祈。

1、判斷是否進(jìn)行熔斷的依據(jù)是:計(jì)算錯(cuò)誤率色迂,當(dāng)錯(cuò)誤率超過預(yù)設(shè)的值(默認(rèn)是50%)且10秒內(nèi)超過20個(gè)請(qǐng)求香缺,則開啟熔斷。
2歇僧、 對(duì)于被熔斷的請(qǐng)求图张,并不是永久被切斷,而是被暫停一段時(shí)間之后馏慨,允許部分請(qǐng)求通過埂淮,若請(qǐng)求都是健康的,則對(duì)請(qǐng)求健康恢復(fù)(取消熔斷)写隶,如果不是健康的倔撞,則繼續(xù)熔斷。

2.3 總執(zhí)行流程

image.png
  1. 首先判斷是否有緩存慕趴,如果有則直接返回結(jié)果
  2. 無緩存痪蝇,則判斷斷路器是否打開,如果打開則執(zhí)行回退方法冕房,返回結(jié)果
  3. 熔斷器未打開躏啰,則判斷線程池/信號(hào)量是否到底閾值,如果到達(dá)閾值耙册,則執(zhí)行回退方法给僵,返回結(jié)果
  4. 若未達(dá)到閾值,則執(zhí)行命令详拙,如果成功返回結(jié)果帝际;失敗返回回退方法的執(zhí)行結(jié)果

參考:
[1] Hystrix GitHub官網(wǎng):https://github.com/Netflix/Hystrix/wiki
[2] 楊恩雄-2017《瘋狂Spring Cloud微服務(wù)架構(gòu)實(shí)戰(zhàn)》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饶辙,隨后出現(xiàn)的幾起案子蹲诀,更是在濱河造成了極大的恐慌,老刑警劉巖弃揽,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脯爪,死亡現(xiàn)場(chǎng)離奇詭異则北,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)痕慢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門尚揣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人守屉,你說我怎么就攤上這事惑艇。” “怎么了拇泛?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵滨巴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我俺叭,道長(zhǎng)恭取,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任熄守,我火速辦了婚禮蜈垮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裕照。我一直安慰自己攒发,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布晋南。 她就那樣靜靜地躺著惠猿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪负间。 梳的紋絲不亂的頭發(fā)上偶妖,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音政溃,去河邊找鬼趾访。 笑死,一個(gè)胖子當(dāng)著我的面吹牛董虱,可吹牛的內(nèi)容都是我干的扼鞋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼愤诱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼藏鹊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起转锈,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楚殿,沒想到半個(gè)月后撮慨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竿痰,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年砌溺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了影涉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡规伐,死狀恐怖蟹倾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猖闪,我是刑警寧澤鲜棠,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站培慌,受9級(jí)特大地震影響豁陆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吵护,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一盒音、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧馅而,春花似錦祥诽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偎血,卻和暖如春诸衔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颇玷。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工笨农, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帖渠。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓谒亦,卻偏偏與公主長(zhǎng)得像空郊,于是被迫代替她去往敵國(guó)和親份招。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狞甚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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