Netflix-Hystrix

hystrix.png

Hystrix是什么

在分布式環(huán)境中蛹头,服務(wù)間依賴調(diào)用必然會(huì)有一些失敗嫩痰。Hystrix是Netflix開源的一個(gè)Java庫遵堵,通過添加延遲容忍和容錯(cuò)邏輯晚伙,幫助你控制這些分布式服務(wù)之間的交互。Hystrix通過隔離服務(wù)之間的訪問點(diǎn)拷窜、停止級(jí)聯(lián)失敗和提供回退選項(xiàng)來實(shí)現(xiàn)這一點(diǎn)开皿,所有這些都可以提高系統(tǒng)的整體伸縮性和穩(wěn)定性。

Hystrix的設(shè)計(jì)目標(biāo)

  1. 客戶端通過對(duì)下游服務(wù)調(diào)用的延遲和故障進(jìn)行隔離與控制篮昧;
  2. 在復(fù)雜的分布式系統(tǒng)中阻止級(jí)聯(lián)故障赋荆;
  3. 快速失敗,快速恢復(fù)懊昨;
  4. 回退窄潭,盡可能優(yōu)雅地降級(jí);
  5. 啟用近實(shí)時(shí)監(jiān)控疚颊、警報(bào)和操作控制狈孔。

Hystrix作用描述

復(fù)雜分布式體系結(jié)構(gòu)中的應(yīng)用程序有許多依賴項(xiàng)信认,每個(gè)依賴項(xiàng)在某些時(shí)候都不可避免地會(huì)失敗材义。如果程序沒有引入外部故障隔離措施,那么它有可能被下游拖垮嫁赏。

正常情況下

image.png
當(dāng)其中有一個(gè)系統(tǒng)有延遲時(shí)其掂,它可能阻塞整個(gè)用戶請(qǐng)求
image.png
在高流量的情況下,一個(gè)后端依賴項(xiàng)的延遲可能導(dǎo)致所有服務(wù)器上的所有資源在數(shù)秒內(nèi)飽和(PS:意味著后續(xù)再有請(qǐng)求將無法立即提供服務(wù))
image.png
舉例說明:
對(duì)于一個(gè)依賴于30個(gè)服務(wù)的應(yīng)用程序潦蝇,每個(gè)服務(wù)99.99%的時(shí)間都是正常運(yùn)行款熬,程序健康期望值如下:

?????99.99 ^ 30 = 99.7% 可用
?????也就是說100個(gè)請(qǐng)求3個(gè)會(huì)失敗
?????換種說法 365 * 0.003 / 12 * 24 = 2.19 每個(gè)月有2個(gè)小時(shí)服務(wù)是不可用的


現(xiàn)實(shí)通常更糟糕!

Hystrix設(shè)計(jì)原則是什么

  • 防止任何單個(gè)依賴項(xiàng)耗盡所有容器(如Jetty)工作線程攘乒。
  • 甩掉包袱贤牛,快速失敗而不是排隊(duì)。
  • 在任何可行的地方提供回退则酝,以保護(hù)用戶不受失敗的影響殉簸。
  • 使用隔離技術(shù)(如隔離板、泳道和斷路器模式)來限制任何一個(gè)依-
    賴項(xiàng)的影響。
  • 通過近實(shí)時(shí)的度量般卑、監(jiān)視和警報(bào)來優(yōu)化發(fā)現(xiàn)時(shí)間武鲁。
  • 通過配置的低延遲傳播來優(yōu)化恢復(fù)時(shí)間。
  • 支持對(duì)Hystrix的大多數(shù)方面的動(dòng)態(tài)屬性更改蝠检,允許使用低延遲反饋- 循環(huán)進(jìn)行實(shí)時(shí)操作修改沐鼠。
  • 避免在整個(gè)依賴客戶端執(zhí)行中出現(xiàn)故障,而不僅僅是在網(wǎng)絡(luò)流量中叹谁。

Hystrix是如何實(shí)現(xiàn)它的目標(biāo)的

  1. 用一個(gè)HystrixCommand 或者 HystrixObservableCommand (這是命令模式的一個(gè)例子)包裝所有的對(duì)外部系統(tǒng)(或者依賴)的調(diào)用饲梭,典型地它們?cè)谝粋€(gè)單獨(dú)的線程中執(zhí)行
    2.調(diào)用超時(shí)時(shí)間比你自己定義的閾值要長。有一個(gè)默認(rèn)值本慕,對(duì)于大多數(shù)的依賴項(xiàng)你是可以自定義超時(shí)時(shí)間的排拷。
  2. 為每個(gè)依賴項(xiàng)維護(hù)一個(gè)小的線程池(或信號(hào)量);如果線程池滿了锅尘,那么該依賴性將會(huì)立即拒絕請(qǐng)求监氢,而不是排隊(duì)。
  3. 調(diào)用的結(jié)果有這么幾種:成功藤违、失斃烁(客戶端拋出異常)、超時(shí)顿乒、拒絕议街。
  4. 在一段時(shí)間內(nèi),如果服務(wù)的錯(cuò)誤百分比超過了一個(gè)閾值璧榄,就會(huì)觸發(fā)一個(gè)斷路器來停止對(duì)特定服務(wù)的所有請(qǐng)求特漩,無論是手動(dòng)的還是自動(dòng)的。
  5. 當(dāng)請(qǐng)求失敗骨杂、被拒絕涂身、超時(shí)或短路時(shí),執(zhí)行回退邏輯搓蚪。
    近實(shí)時(shí)監(jiān)控指標(biāo)和配置變化蛤售。
當(dāng)使用Hystrix來包裝每個(gè)依賴項(xiàng)時(shí),上圖中的架構(gòu)會(huì)發(fā)生變化妒潭,每個(gè)依賴項(xiàng)相互隔離悴能,當(dāng)延遲發(fā)生時(shí),它會(huì)被限制在資源中雳灾,并包含回退邏輯漠酿,該邏輯決定了在依賴項(xiàng)中發(fā)生任何類型的故障時(shí)應(yīng)作出何種響應(yīng),如下圖所示:
image.png
官方wiki

https://github.com/Netflix/Hystrix/wiki

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谎亩,一起剝皮案震驚了整個(gè)濱河市炒嘲,隨后出現(xiàn)的幾起案子谈竿,更是在濱河造成了極大的恐慌,老刑警劉巖摸吠,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空凸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寸痢,警方通過查閱死者的電腦和手機(jī)呀洲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啼止,“玉大人道逗,你說我怎么就攤上這事∠追常” “怎么了滓窍?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巩那。 經(jīng)常有香客問我吏夯,道長,這世上最難降的妖魔是什么即横? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任噪生,我火速辦了婚禮,結(jié)果婚禮上东囚,老公的妹妹穿的比我還像新娘跺嗽。我一直安慰自己,他們只是感情好页藻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布桨嫁。 她就那樣靜靜地躺著,像睡著了一般份帐。 火紅的嫁衣襯著肌膚如雪璃吧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天弥鹦,我揣著相機(jī)與錄音肚逸,去河邊找鬼爷辙。 笑死彬坏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膝晾。 我是一名探鬼主播栓始,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼血当!你這毒婦竟也來了幻赚?” 一聲冷哼從身側(cè)響起禀忆,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎落恼,沒想到半個(gè)月后箩退,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佳谦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年戴涝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻蔑。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啥刻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咪笑,到底是詐尸還是另有隱情可帽,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布窗怒,位于F島的核電站映跟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扬虚。R本人自食惡果不足惜申窘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孔轴。 院中可真熱鬧剃法,春花似錦、人聲如沸路鹰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晋柱。三九已至优构,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雁竞,已是汗流浹背钦椭。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碑诉,地道東北人彪腔。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像进栽,于是被迫代替她去往敵國和親德挣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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