限制以下的另一流22中的業(yè)務被標記為符合策略業(yè)務。
[0057]通過將輸入的應用業(yè)務分類為流22以及將每一個流22的應用業(yè)務標記為符合策略業(yè)務或不符合策略業(yè)務,DTC 30可以被進一步配置為根據需要對流22中的各個流中的應用消息進行節(jié)流或選擇性丟棄,從而維持與在可用于流22的相應SLA中保證的最大服務水平的符合性。因此,可以在每一個應用實例14處針對各個流22以及通過各個流22的組合表示的聚合流應用業(yè)務整形、選擇性分組丟棄或者其他類型的應用業(yè)務速率限制或調
-K-T。
[0058]圖2示出了應用實例14及其相應裝置28可以實現(xiàn)在相同或分離的計算系統(tǒng)——例如,相同或分離的服務器硬件一一上,并且還可以使用虛擬化服務器來實現(xiàn)。在該示例性示意圖中,應用實例14-1和14-2被實現(xiàn)在駐留在第一物理服務器上的虛擬化服務器上,該虛擬化服務器為其執(zhí)行提供了操作系統(tǒng)環(huán)境。當然,其相應裝置28駐留在該相同的操作系統(tǒng)環(huán)境中。
[0059]應用實例14-3和14-4及其相應裝置28也駐留在該相同的服務器,但是它們是在托管應用實例14-1和14-2的虛擬化服務器之外實現(xiàn)的。兩個附加服務器中的每一個托管圖示中所示的兩個附加應用實例14-5和14-6中的相應應用實例。這些附加服務器可以或不可以與其他服務器位于同一位置處,但是它們至少可通信地鏈接,以提供在相應的裝置28中的CC 32之間交換本地需求信息。
[0060]圖3示出了結合每一個應用實例14實現(xiàn)的裝置28中包括的DTC30的示例性功能電路實現(xiàn)。在所示的示例中,DTC 30包括SLA分類器40、SLA限制器42、需求存儲設備33、速率計算器46、以及需求分發(fā)器加接收機48,其可以被理解為包括整個CC 32或CC 32的元件,以用于交換本地需求信息。
[0061]DCT 30的輸入應用業(yè)務是由負載均衡器20(未示出)向應用實例發(fā)送的所有應用業(yè)務的聚合,并且因此包括來自任意數量的流22的業(yè)務的混合。同樣地,流出DTC 30并且流入應用實例14的應用業(yè)務表示聚合流。然而,與DTC 30觀測到的來自負載均衡器20的輸入聚合相比,可以對從DTC 30到應用實例的業(yè)務的聚合流進行監(jiān)管、整形、或以其他方式調節(jié)。例如,與流入DTC 30的聚合應用業(yè)務相比,可以對流出DTC 30的聚合應用業(yè)務進行速率限制或其他方式整形。
[0062]為了更好地理解示例性配置中的SLA限制器42的操作,圖4示出了根據一個實施例的SLA限制器42的功能電路配置。在所示的實施例中,SLA限制器42包括令牌桶選擇器50,在附圖及下文中簡稱為“TB選擇器50”。SLA限制器42還包括業(yè)務監(jiān)管器52,該業(yè)務監(jiān)管器52在邏輯上包括針對相應流22(標記為“A”、“B”、“C”等)的令牌桶“A”、“B”、“C”等,并且使用這些令牌桶操作。此外,SLA限制器42包括TB監(jiān)管SLA限制器54、隊列處理器56、以及相應的高優(yōu)先級隊列58和低優(yōu)先級隊列60,相應的高優(yōu)先級隊列58和低優(yōu)先級隊列60實際上可以包括多個高優(yōu)先級隊列和低優(yōu)先級隊列并且可以在主機操作環(huán)境中在裝置28可用的工作存儲器中被實現(xiàn)。這些實體可以作為整體被理解為SLA實施器62。
[0063]雖然針對這些詳細功能電路布置的操作給出了示例性細節(jié),但是這有助于參考每一個裝置28實現(xiàn)的整個操作方法。圖5提供了該方法的示例,在示意圖中將該方法表示為“方法500”。方法500將被理解為控制單獨客戶端12對軟件應用10的最大總利用率的方法,其中,跨越多個對等應用實例14實現(xiàn)應用10,所述多個對等應用實例14接收從多個客戶端12動態(tài)地分發(fā)給它們的應用業(yè)務。
[0064]每一個應用實例14處的方法500包括:將進入進入應用實例14的應用業(yè)務劃分為流22 (框502);關于應用實例14對每一個流22的本地需求值進行估計(框504);與應用實例14中的一個或多個其他應用實例交換本地需求信息(框506),包括:發(fā)送在應用實例14處針對應用實例14處的每一個流22估計的本地需求值,以及接收其他應用實例處的相似流22的相似估計的本地需求值;基于交換的本地需求信息關于應用10確定流22的總體需求值(框508);根據針對每一個流22所確定的總體需求值來計算該流22的本地利用率限制(框510);以及根據是否超出流22的本地利用率限制將每一個流22中的應用業(yè)務標記為不符合策略業(yè)務或符合策略業(yè)務(框512)。
[0065]方法500還包括:確定應用實例14處的所有流22的應用業(yè)務的聚合是否超出本地聚合利用率限制(框514);以及基于是否超出本地聚合利用率限制和/或基于例如根據緩存優(yōu)先級對符合策略業(yè)務和不符合策略業(yè)務的區(qū)分,來控制對去往應用實例的聚合應用業(yè)務的緩存。
[0066]方法500以分散方式控制任意數量的服務器/應用實例14之間的應用業(yè)務,并且其主要優(yōu)點是產生任意數量的客戶端12對應用資源的受控共享。概括地說,利用本文設想的裝置28和方法500,不存在對資源分配進行實施或控制的中心點。更確切地說,每一個裝置28用作應用實例14中的相應應用實例的業(yè)務調節(jié)器,并且運行兩個主要算法:由DTC30提供的本地業(yè)務控制算法以及由CC 32提供的狀態(tài)傳播算法。
[0067]雖然以下細節(jié)可以在某些方面改變,但是在一個或多個實施例中,每一個應用實例14處的DTC 30基于在一個或多個分類流22中針對應用實例14輸入的應用業(yè)務定期地計算并存儲“需求”。使用傳播算法將這些估計的需求值定期地且有效地傳播到其他DTC30——即,將每一個DTC 30處計算的本地需求信息與其他DTC 30共享。此外,每一個DTC30基于其自己的需求計算和其他DTC 30的需求計算以及用相同的測量項表示總應用容量的配置或已知的值來計算資源限制值一一例如,速率。每一個DTC 30基于調節(jié)應用實例處的應用業(yè)務流22來限制每一個流22中由其相應應用實例14處理的應用業(yè)務,而不論其對等體如何,從而提供應用容量的公平或均衡共享。
[0068]因此,應用實例14本身不需要共享狀態(tài)信息,并且應用實例14與其對等應用實例14相比不具有特殊作用。類似地,裝置28與其對等裝置28相比不具有特殊作用。每一個裝置28簡單地使用在裝置28之間傳播的本地需求值以相似的方式操作,以在每一個應用實例處提供獨立的業(yè)務調節(jié)功能,但是這允許整個應用10滿足針對各個客戶端12的SLA要求,而不允許這些客戶端中的任意一個過度利用應用10。因此,裝置28在應用實例14之間提供了足夠的協(xié)調以在應用級別實施SLA。
[0069]如上所述,可以基于與針對任意給定應用實例14輸入的應用業(yè)務相關聯(lián)的起源標識將該業(yè)務分類為不同的流。例如,流可以是soap/http或遠程登錄消息中包含的來自客戶端12的請求,其中,所有此類請求具有相同的用戶標識。因此,每一個流可以與特定SLA相關聯(lián),例如,應用10要整體滿足的最小請求速率和/或最大突發(fā)大小。
[0070]為了進一步討論示例性操作細節(jié),轉回圖3,SLA分類器40讀取或以其他方式確定針對給定應用業(yè)務一一例如,給定輸入請求消息一一的客戶端標識,并且針對該客戶端12使用適合的SLA分類器對業(yè)務加標簽。注意,SLA分類器40還可以實現(xiàn)在應用實例14中,使得輸入的應用業(yè)務由應用實例14識別和加標簽,被傳遞到裝置28以進行受控緩存(如本文所教導的),然后DTC 30將得到的經調節(jié)的應用業(yè)務返回應用實例14以進行處理。
[0071]應用客戶端標識(ID)可以存儲在需求存儲設備44中。SLA限制器42通過實施由SLA分類器40設置的SLA標簽作為業(yè)務整形器操作,其中,SLA標簽可以被理解為類型流分類或標識符。在這一點上,可以使用令牌桶方案來實現(xiàn)業(yè)務整形。參見例如Kim, Han Seok ;Park, Eun-Chan ;Heo,Seo ffeon, “A Token-Bucket Based Rate ControlAlgorithm with Maximum and Minimum Rate Constraints, ” IEICE Transact1ns onCommunicat1ns, Volume E91.B, Issue 5, pp.1623-1626 (2010),其通過引用的方式并入本文。
[0072]速率計算器46以給定間隔“A”讀取需求存儲設備44中的信息,并且與TB選擇器50相關聯(lián)地更新SLA限制器42中的所有令牌桶速率一一參見例如客戶端A、B和C的令牌桶,如圖4中的業(yè)務監(jiān)管器52中所示。需求分發(fā)器和接收機48以給定間隔“B”讀取需求存儲設備44,并且使用基于gossip的逆熵協(xié)議算法對其他應用實例14處的本地需求信息進行同步。間隔A和B無需相等,例如,間隔B可以比間隔A更長,并且可以在特定應用的上下文中根據需要或期望對這兩個間隔的絕對值進行設置。更短的間隔提供更好的“系統(tǒng)”響應,但是增加了對等裝置28之間的信令開銷。然而,存在明顯的靈活性,這是因為與CC32相比,速率計算器46和DTC 30通常作為裝置28內的分離進程操作。
[0073]轉向圖4中所示的示例性SLA限制器實現(xiàn),可以看出,SLA限制器42基于多個功能電路的操作來執(zhí)行業(yè)務整形。SLA限制器42可操作地對到達的每一個應用消息實施計算出的本地利用率限制一一例如,本地速率限制一一以便由應用實例14處理。SLA限制器42對進入進入應用實例14的每一個應用消息執(zhí)行以下邏輯處理操作:(I)由TB選擇器50讀取來自應用消息的SLA標簽,以及基于SLA標簽從業(yè)務監(jiān)管器52中的現(xiàn)有TB監(jiān)管實例集合中挑選專用令牌桶監(jiān)管實例。換言之,識別應用消息所屬的流22,并且例如針對流A、B、C等識別適合的令牌桶。
[0074]通過業(yè)務監(jiān)管器52中的TB監(jiān)管實例中的適當TB監(jiān)管實例來評估應用消息。根據流22的應用業(yè)務是否超出針對該流22計算出的本地利用率限制,將應用消息標記為符合策略的或不符合策略的。相應地,隊列處理器56使用來自業(yè)務監(jiān)管器52的監(jiān)管結果來選擇正確的隊列(低優(yōu)先級或高優(yōu)先級)。如上所述,還可以根據其他優(yōu)先級劃分(例如,基于SLA的最小服務速率,其導致某些緩存的應用業(yè)務以比其他緩存的應用業(yè)務更高的優(yōu)先級被緩存)來組織SLA實施器62中包括的隊列58和60。
[0075]業(yè)務監(jiān)管器52可以被理解為施加第一級或第一步業(yè)務監(jiān)管,其是以每一流為基礎執(zhí)行的。相應地,SLA實施器62可以被理解為施加第二級或第二步業(yè)務監(jiān)管,其中關鍵區(qū)別是由SLA實施器62實施的監(jiān)管對裝置28/應用實例14處的所有業(yè)務流22的聚合操作。在示例性配置中,SLA實施器62基于是否超出本地聚合利用率限制和/或基于符合策略業(yè)務和不符合策略業(yè)務之間的區(qū)分,來控制對去往應用實例14的聚合應用業(yè)務的緩存。例如,控制緩存可以是指只要未超出本地聚合利用率限制,就不緩存消息,或者消息可以終止于不同的緩存,其中以不同的優(yōu)先級排空每一個緩存。
[0076]此外,可以例如根據一個或多個流參數來表達本地聚合利用率限制,例如,最大聚合流速率和/或最大聚合突發(fā)大小。
[0077]在一個方法中,隊列處理器56檢查緩存58、60是否包含任何