(二十三)——Throttling 節(jié)流模式

2018-02-24 15:44 更新

云計算設(shè)計模式(二十三)——Throttling 節(jié)流模式

控制由應(yīng)用程序使用,一個單獨的租戶或整個服務(wù)的一個實例的資源的消耗。這種模式可以允許系統(tǒng)繼續(xù)運行并滿足服務(wù)水平協(xié)議,即使當(dāng)增加需求的資源放置一個極端載荷。

背景和問題

在云應(yīng)用負(fù)載通常上變化的基礎(chǔ)上的活動用戶的數(shù)量或他們正在執(zhí)行的活動類型的時間。例如,多個用戶可能會在工作時間被激活,否則系統(tǒng)可能被要求在每月結(jié)束時執(zhí)行計算昂貴的分析。也有可能是突然和意外的突發(fā)活動。如果系統(tǒng)的處理要求超過了可用的資源的能力,其將遭受性能不佳,甚至?xí)?。該系統(tǒng)可能必須滿足的服務(wù)約定的水平,并且這種故障可能是不可接受的。

有許多策略可用于處理可變負(fù)載在云中,根據(jù)業(yè)務(wù)目標(biāo)的應(yīng)用程序。一種策略是使用自動縮放來在任何給定時間相匹配的供應(yīng)資源給用戶的需要。這具有始終如一地滿足用戶需求,同時優(yōu)化運行費用的潛力。然而,盡管自動縮放可能會引發(fā)更多的資源配置,這配置是不是瞬間。如果需求快速增長,有可能是一個時間窗口,那里是一個資源赤字。

解決方案

另一種策略來自動縮放是為了讓應(yīng)用程序能夠使用的資源最多只有一些軟限位,然后油門當(dāng)他們達(dá)到此限制。該系統(tǒng)應(yīng)監(jiān)測它是如何使用的資源,使得當(dāng)使用量超過一些系統(tǒng)定義的閾值時,它可以調(diào)節(jié)來自一個或多個用戶的請求,以使系統(tǒng)繼續(xù)工作,并滿足任何服務(wù)級別協(xié)議(SLA),該已到位。有關(guān)監(jiān)控資源使用情況的詳細(xì)信息,請參閱儀器和遙測指導(dǎo)。

該系統(tǒng)可以實現(xiàn)多種限制策略,其中包括:

  • 從誰已經(jīng)訪問系統(tǒng)API超過每秒n次超過給定時間內(nèi)的個人用戶拒絕請求。這就要求系統(tǒng)米利用資源用于運行應(yīng)用程序的每個租戶或用戶。欲了解更多信息,請參閱服務(wù)計量指引。
  • 禁用或有辱人格的選擇不必要的服務(wù)的功能,以便必要的服務(wù)可以提供足夠的資源運行暢通。例如,如果應(yīng)用程序是視頻流輸出,它可以切換到一個較低的分辨率。
  • 使用負(fù)載均衡來平滑活動量(這種方法是覆蓋在由基于隊列的負(fù)載均衡模式的更多細(xì)節(jié))。在多租戶環(huán)境中,這種方法將減少為每一個租戶的性能。如果系統(tǒng)必須支持的住戶有不同的SLA的組合,為高價值租戶的工作可能會被立即執(zhí)行。請求其他住戶可以忍住,以及時處理積壓有所緩解。優(yōu)先級隊列模式,可以用來幫助實現(xiàn)此方法。
  • 代表低優(yōu)先級的應(yīng)用程序或租戶被推遲執(zhí)行的操作。這些操作可以暫?;蛳鳒p,異常生成的通知,該系統(tǒng)正忙,該操作應(yīng)該稍后重試房客。

圖1示出一個區(qū)域圖進(jìn)行資源利用率(存儲器,CPU,帶寬,以及其它因素的組合)對時間對于正在使用的三個特征的應(yīng)用程序。一個特征是功能性的區(qū)域,例如,執(zhí)行特定的任務(wù)集,一個代碼段,執(zhí)行一個復(fù)雜的計算,或者,提供了一個服務(wù),例如在內(nèi)存中緩存的元素的組分。這些特征被標(biāo)記為 A,B 和 C。

圖1 - 對時間的曲線圖的資源利用率代表三個用戶運行的應(yīng)用程序

注意:

立即行功能下的區(qū)域表示應(yīng)用程序中使用時,調(diào)用此功能的資源。例如,下面的線為特色的一個區(qū)域顯示使用的是正在使用的功能 A 的應(yīng)用資源,并為特征 A 和特征 B 線之間的區(qū)域被使用的應(yīng)用程序調(diào)用功能 B.匯總的指示資源對于每個特征區(qū)域顯示了系統(tǒng)的總的資源利用率。

在圖1中的曲線示出了延遲操作的效果。只是之前的時間 T1,分配給使用這些功能的所有應(yīng)用程序的總資源達(dá)到一個閾值(資源利用的軟限制)。在這一點上,應(yīng)用程序是在用盡可用的資源的危險。在這個系統(tǒng)中,特征 B 比特點 A 或特征 ? 不太重要,所以它是暫時禁用,并且它被使用的資源被釋放。之間的時間 T1,T2,使用功能 A 和功能 C 中的應(yīng)用程序繼續(xù)運行正常。最后,資源利用這兩個功能減退的點時,在時間 T2 時,有足夠的容量,以再次啟用功能 B 中。

該自動縮放和調(diào)節(jié)方法也可以結(jié)合,以幫助保持應(yīng)用程序響應(yīng)和 SLA 之內(nèi)。如果需求預(yù)計將保持高位,節(jié)流可以提供一個臨時的解決方案,同時在系統(tǒng)擴(kuò)展了。在這一點上,該系統(tǒng)的全部功能可以恢復(fù)。

圖 2 示出了整體的資源利用通過在與時間的系統(tǒng)中運行的所有應(yīng)用程序的區(qū)域圖,并示出了如何限制可與自動縮放組合。

圖2 - 圖表顯示自動縮放與節(jié)流相結(jié)合的效應(yīng)

在時間T1,門檻指定資源利用的軟限制為止。在這一點上,系統(tǒng)可以開始向外擴(kuò)展。然而,如果新的資源不成為可用的足夠快地再現(xiàn)有的資源可能被耗盡,并且系統(tǒng)可能會失敗。為了防止這種情況發(fā)生,系統(tǒng)被暫時限制,如前面所述。何時自動縮放已完成和額外資源,限制可以放寬。

問題和注意事項

在決定如何實現(xiàn)這個模式時,您應(yīng)考慮以下幾點:

  • 節(jié)流的應(yīng)用程序,并使用策略,是一個建筑的決定,影響系統(tǒng)的整體設(shè)計。節(jié)流應(yīng)在應(yīng)用設(shè)計之初就被考慮,因為這是不容易的添加它一旦系統(tǒng)已經(jīng)實施。
  • 節(jié)流必須迅速執(zhí)行。系統(tǒng)必須能夠檢測活性增加,并相應(yīng)地作出反應(yīng)。該系統(tǒng)還必須能夠恢復(fù)到原來的狀態(tài)后快速負(fù)載有所緩和。這需要相應(yīng)的性能數(shù)據(jù)是不斷捕獲和監(jiān)測。
  • 如果一個服務(wù)需要暫時拒絕用戶的請求,則它應(yīng)該返回一個特定的錯誤代碼,以使客戶端應(yīng)用程序理解為拒絕執(zhí)行某種操作的原因是由于節(jié)流??蛻舳藨?yīng)用程序可以等待一段時間,然后重試該請求。
  • 節(jié)流可作為而系統(tǒng) autoscales一項臨時措施。在某些情況下它可能是更好的簡單節(jié)流,而不是按比例,如果在活動突發(fā)是突然的并且預(yù)計不會被長壽命,因為結(jié)垢可顯著增加了運行成本。
  • 如果節(jié)流正在使用的臨時措施,而一個系統(tǒng) autoscales,并且如果資源需求迅速增長,系統(tǒng)可能無法繼續(xù)運作,即使在節(jié)流模式中操作時。如果這是不能接受的,考慮維護(hù)大容量的儲備和配置更積極自動縮放。

何時使用這個模式

使用這種模式:

  • 為了確保系統(tǒng)持續(xù)滿足服務(wù)水平協(xié)議。
  • 為了防止單一租戶獨占由應(yīng)用程序所提供的資源。
  • 為了處理突發(fā)活動。
  • 為了幫助限制需要保持它運轉(zhuǎn)的最大資源水平的成本優(yōu)化的系統(tǒng)。

例子

圖3示出了如何限制可以在多租戶系統(tǒng)來實現(xiàn)。從每個租戶組織的用戶訪問一個云托管的應(yīng)用程序,他們填寫并提交調(diào)查。應(yīng)用程序中包含的儀器,用于監(jiān)視在其中這些用戶提交請求給應(yīng)用程序的速度。

為了防止用戶從一個租戶影響應(yīng)用的所有其他用戶的響應(yīng)性和可用性,限制施加到每秒從任何一個租戶的用戶可以提交請求的數(shù)目。該應(yīng)用程序塊請求超過此限制

圖3 - 在一個多租戶應(yīng)用程序中實現(xiàn)節(jié)流

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號