限流模式(Throttling pattern)

控制應(yīng)用程序的某個實(shí)例,某個獨(dú)立的租戶维蒙,或者某個整個服務(wù)對資源的消費(fèi)简烤。即使當(dāng)需求增加而導(dǎo)致對資源的大量負(fù)載時,該模式也能夠允許系統(tǒng)繼續(xù)工作并滿足SLA(服務(wù)等級協(xié)議)洲愤。

場景

云應(yīng)用程序的負(fù)載經(jīng)常依據(jù)活躍用戶的數(shù)量或用戶活動的類型而隨著時間變化颓芭。例如,很多用戶可能在工作時間活躍柬赐,或者在每個月月底的時候亡问,可能會要求系統(tǒng)去處理開銷很大的計算分析。也可能會存在突發(fā)的和意料之外的活動上的爆發(fā)點(diǎn)肛宋。如果系統(tǒng)的處理請求超出可用資源的容量州藕,系統(tǒng)性能將會下降,并且甚至?xí)l(fā)生故障酝陈。如果系統(tǒng)必須滿足某個服務(wù)等級協(xié)議床玻,這樣的故障是不能夠被接受的。

根據(jù)應(yīng)用程序的業(yè)務(wù)目標(biāo)沉帮,有很多策略可以用來處理云端上的負(fù)載變化锈死。一個策略是使用自動擴(kuò)展來滿足特定時間上用戶對于資源供給需求。當(dāng)優(yōu)化運(yùn)行時成本時穆壕,該策略有持續(xù)滿足用戶需求的潛力待牵。然而,當(dāng)自動擴(kuò)展可以觸發(fā)額外資源的供給時喇勋,這種供給不是立即的缨该。如果需求快速增加,會存在一個資源不足的時間窗口川背。

解決方案

一個替代的自動擴(kuò)展策略是只允許應(yīng)用程序使用有限定上限的資源贰拿,當(dāng)限定達(dá)到時蛤袒,對應(yīng)用程序限流。系統(tǒng)應(yīng)該監(jiān)控資源時如何使用的壮不,這樣才能當(dāng)利用率超過閾值時汗盘,系統(tǒng)能夠限流某個或多個用戶的請求。這將會使得系統(tǒng)繼續(xù)工作询一,并且滿足任何存在的服務(wù)等級協(xié)議(SLAs)隐孽。

系統(tǒng)可以實(shí)現(xiàn)一些限流策略,包括:

拒絕某個在特定時間段內(nèi)已經(jīng)訪問每秒n次以上的系統(tǒng)APIs的單獨(dú)用戶健蕊。這就要求系統(tǒng)計量每個租戶或用戶使用的資源菱阵。

禁用或降級一些非必要的服務(wù)功能,以便必要的服務(wù)能夠以足夠的資源無礙的運(yùn)行缩功。例如晴及,如果應(yīng)用程序是視頻流輸出,可以切換到某個低分辨率嫡锌。

使用負(fù)載分級來平滑活動的容量虑稼。在某個多租戶環(huán)境中,該方式將會減少對于每個租戶的性能势木。如果系統(tǒng)必須支持混合不同SLAs的租戶蛛倦,對于高價值的租戶的工作可能會立即被處理。對于其它租戶的請求可能會被延遲啦桌,當(dāng)消除了待辦任務(wù)時溯壶,才去處理這些請求。優(yōu)先級隊列模式可以用來實(shí)現(xiàn)這種方式甫男。

延遲低優(yōu)先級應(yīng)用程序或租戶的操作且改。這些操作可以被掛起或限制,產(chǎn)生一個異常來通知租戶系統(tǒng)繁忙和該操作應(yīng)該等會重試板驳。

下圖展示了應(yīng)用程序使用3種特性的資源利用(內(nèi)存又跛,CPU,帶寬等因素的組合)隨時間變化的關(guān)系若治。特性是指一個功能范圍效扫,比如某個執(zhí)行特定任務(wù)集合的組成部分,某個執(zhí)行復(fù)雜計算的代碼片段直砂,或者某個提供服務(wù)比如內(nèi)存內(nèi)緩存的單元。這些特性被標(biāo)識為A浩习,B静暂,和C。

特性曲線下方的面積就是使用該特性需要的資源谱秽;將A洽蛀,B摹迷,和C的資源利用疊加起來就是總的資源利用量。

上圖展示了延遲操作的影響郊供。T1時間開始之前峡碉,分配給所有使用這些特性的應(yīng)用程序的資源達(dá)到某個閾值(資源利用限制)。在此刻驮审,應(yīng)用程序有耗盡可用資源的危險鲫寄。在該系統(tǒng)中,特性B沒有特性A或特性C重要疯淫,因此它將會暫時被禁用地来,并且它使用的資源會被釋放。在T1時間和T2時間之間熙掺,使用特性A和特性B的應(yīng)用程序繼續(xù)正常運(yùn)行未斑。最終,特性A和C的資源利用減少到某個時間點(diǎn)币绩,在T2時間蜡秽,在該時間點(diǎn)有足夠的能力重新啟用特性B。

自動擴(kuò)展和限流方式也可以組合起來缆镣,這樣有助于保持應(yīng)用程序響應(yīng)和滿足SLAs芽突。如果預(yù)期到需求仍然會很高,在系統(tǒng)橫向擴(kuò)展時费就,限流會提供一個臨時的解決方案诉瓦。在此刻,系統(tǒng)全部功能可以被恢復(fù)力细。

下圖展示了運(yùn)行在系統(tǒng)里面的全部應(yīng)用程序所使用的所有資源隨著時間變化關(guān)系睬澡,并且說明了限流是如何能夠和自動擴(kuò)展相結(jié)合的。

在T1時間眠蚂,達(dá)到由資源利用的軟性限制標(biāo)明的閾值煞聪。在此刻,系統(tǒng)可以開始橫向擴(kuò)展逝慧。然而昔脯,如果新的資源不能立即變得可用,那么現(xiàn)存的資源可能會被耗盡笛臣,并且系統(tǒng)可能發(fā)生故障云稚。為了防止這種情況發(fā)生,如前面所述沈堡,系統(tǒng)會被暫時地限流静陈。當(dāng)自動擴(kuò)展完成時并且額外的資源可用了,限流就可以放寬了。

考慮點(diǎn)

在實(shí)現(xiàn)該模式時鲸拥,考慮下面幾點(diǎn):

限流一個應(yīng)用程序和使用的策略是一種架構(gòu)上的決策拐格,該決策會影響整個系統(tǒng)的設(shè)計。應(yīng)該在應(yīng)用程序設(shè)計早期階段就考慮限流刑赶,因?yàn)閷⑾蘖髟黾拥揭粋€已經(jīng)實(shí)現(xiàn)的系統(tǒng)是很不容易的捏浊。

限流必須被快速地執(zhí)行。系統(tǒng)必須有能力檢測到活動的增加并且做出相應(yīng)地反應(yīng)撞叨。在負(fù)載消除后金踪,系統(tǒng)也必須能夠快速還原到原始狀態(tài)。這要求持續(xù)地捕捉和監(jiān)控相關(guān)恰當(dāng)?shù)男阅軘?shù)據(jù)谒所。

如果某個服務(wù)需要暫時地拒絕用戶請求热康,它應(yīng)該返回某個特定錯誤碼,以便于客戶端應(yīng)用程序明白某個操作被拒絕的原因是因?yàn)橄蘖髁肆恿臁姐军?蛻舳藨?yīng)用程序可以等一段時間在重試請求。

當(dāng)系統(tǒng)自動擴(kuò)展時尖淘,限流可以被用來作為一個臨時的措施奕锌。如果活動上的爆發(fā)是突然的并且預(yù)期不會很長時間,在某些情況下村生,最好是簡單地限流惊暴,而不是去擴(kuò)展,趁桃,因?yàn)閿U(kuò)展會增加運(yùn)行時成本辽话。

當(dāng)系統(tǒng)自動擴(kuò)展時,如果限流被用來作為一個臨時的措施卫病,并且如果資源需求增長特別快油啤,系統(tǒng)可能不會繼續(xù)工作——即使處于限流模式中。如果不能接受這種蟀苛,考慮維護(hù)大容量的儲備并且配置更有侵略性的自動擴(kuò)展策略益咬。

什么時候使用?

適合:

為了保證系統(tǒng)持續(xù)工作來滿足服務(wù)等級協(xié)議帜平。

為了防止某個單一租戶獨(dú)占應(yīng)用程序提供的資源幽告。

為了處理活動上的爆發(fā)。

為了有助于優(yōu)化系統(tǒng)的成本裆甩,通過限制最大資源標(biāo)準(zhǔn)冗锁。

文章來源:Throttling pattern

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嗤栓,隨后出現(xiàn)的幾起案子冻河,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芋绸,死亡現(xiàn)場離奇詭異,居然都是意外死亡担敌,警方通過查閱死者的電腦和手機(jī)摔敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全封,“玉大人马昙,你說我怎么就攤上這事∩层玻” “怎么了行楞?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長土匀。 經(jīng)常有香客問我子房,道長,這世上最難降的妖魔是什么就轧? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任证杭,我火速辦了婚禮,結(jié)果婚禮上妒御,老公的妹妹穿的比我還像新娘解愤。我一直安慰自己,他們只是感情好乎莉,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布送讲。 她就那樣靜靜地躺著,像睡著了一般惋啃。 火紅的嫁衣襯著肌膚如雪哼鬓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天肥橙,我揣著相機(jī)與錄音魄宏,去河邊找鬼。 笑死存筏,一個胖子當(dāng)著我的面吹牛宠互,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椭坚,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼予跌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了善茎?” 一聲冷哼從身側(cè)響起券册,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烁焙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體航邢,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年骄蝇,在試婚紗的時候發(fā)現(xiàn)自己被綠了膳殷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡九火,死狀恐怖赚窃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岔激,我是刑警寧澤勒极,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站虑鼎,受9級特大地震影響辱匿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜震叙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一掀鹅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧媒楼,春花似錦乐尊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夺颤,卻和暖如春痢缎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背世澜。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工独旷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥裂。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓嵌洼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親封恰。 傳聞我的和親對象是個殘疾皇子麻养,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)诺舔,斷路器鳖昌,智...
    卡卡羅2017閱讀 134,714評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,318評論 25 707
  • Control the consumption of resources used by an instance ...
    jorgensen閱讀 1,399評論 0 0
  • 年年歲歲花相似备畦,歲歲年年人不同,不知不覺中師范一別已有二十五個年頭了许昨,世間有這么一種情感懂盐,雖然不能時時相聚,但卻能...
    西嶺布衣閱讀 626評論 5 4
  • 一杯敬自由 一杯敬死亡 寬恕我的平凡 驅(qū)散了迷惘 好吧天亮之后總是潦草離場 清醒的人最荒唐 在明日之子第七期中...
    嶼笙_閱讀 1,262評論 4 9