應(yīng)用業(yè)務(wù)。如果所有此類隊(duì)列是空的,則SLA實(shí)施器62不施加業(yè)務(wù)調(diào)節(jié),并且在沒有經(jīng)優(yōu)先級(jí)劃分的緩存延遲的情況下將給定的應(yīng)用消息傳遞到應(yīng)用實(shí)例14。
[0078]另一方面,如果緩存58、60不為空,則隊(duì)列處理器56根據(jù)定義的優(yōu)先級(jí)方案排空緩存58、60,例如,以速率0.99*R_tot排空高優(yōu)先級(jí)緩存中緩存的應(yīng)用業(yè)務(wù),而以速率0.01*R_tot排空低優(yōu)先級(jí)緩存中的應(yīng)用業(yè)務(wù),其中R_tot表示最大聚合流速率。
[0079]因此,在本文所述的至少一些實(shí)施例中,可以將不同的流22映射到不同的緩存。由緩存58和60表示的高優(yōu)先級(jí)和低優(yōu)先級(jí)是其示例??梢詫⑺袘?yīng)用業(yè)務(wù)放置于此類緩存中,然后根據(jù)本地利用率限制和/或根據(jù)本地聚合利用率限制來排出這些應(yīng)用業(yè)務(wù)。
[0080]圖6A示出了 SLA分類器40的示例性操作,該SLA分類器40對(duì)例如來自負(fù)載均衡器20或其他源的針對(duì)應(yīng)用實(shí)例輸入的所有應(yīng)用業(yè)務(wù)進(jìn)行“濾波”或以其他方式進(jìn)行邏輯處理。作為其處理的結(jié)果,例如經(jīng)由上述SLA加標(biāo)簽將輸入應(yīng)用業(yè)務(wù)分類為流22,其中,每一個(gè)流22包括與相同的客戶端上下文相關(guān)聯(lián)的所有應(yīng)用業(yè)務(wù)。在該示例中,可以看出SLA分類器40將輸入應(yīng)用業(yè)務(wù)歸類為多個(gè)流22,例如,F(xiàn)LOffA, FLOffB, FLOffC直到FLOWN。
[0081]圖6B根據(jù)一個(gè)實(shí)施例通過示出了 SLA限制器42對(duì)各個(gè)流22的操作擴(kuò)展了該相同的流處理示例。然而,在深入研宄細(xì)節(jié)之前,介紹用于此類處理的標(biāo)記將是有幫助的:
[0082]- “flow_x”表示所有應(yīng)用實(shí)例14之間針對(duì)相同客戶端上下文的所有應(yīng)用業(yè)務(wù);
[0083]- “flow_x,i”表示任意給定應(yīng)用實(shí)例14處針對(duì)相同客戶端上下文的所有應(yīng)用業(yè)務(wù),即,“i”指示應(yīng)用實(shí)例14中的特定應(yīng)用實(shí)例,因此將理解的是,應(yīng)用實(shí)例14-1處的DTC30估計(jì)flow_x, i的本地需求值,并且基于接收到flow_x, y、flow_x, z等來估計(jì)flow_x的相關(guān)聯(lián)的總體需求值,其中,“y”和“z”表示flow_x在相應(yīng)其他應(yīng)用實(shí)例14-y和14-z處的其他實(shí)例;
[0084]- “d_x, i ”表示針對(duì)f low_x,i所估計(jì)的本地需求值;
[0085]- “r_x,i”表示在流速率方面針對(duì)floW_X,i的本地流利用率限制,并且其他限制可以附加地或備選地適用,例如,最大突發(fā)大小,其被表示為“b_x, i” ;
[0086]- “r_tot,i”和“b_tot,i”表示用流速率限制和突發(fā)大小限制表示的可應(yīng)用于給定應(yīng)用實(shí)例14-1處的所有流的聚合的本地聚合利用率限制--例如,r_tot, i = r_x, i+r_
y, i+r_z, i,其中,r_y, i和r_z, i表示應(yīng)用實(shí)例14_i處的flow_y和flow_z的最大流速率限制;
[0087]利用上面的標(biāo)記,“R_x”可以用于表示針對(duì)flow_x的所有實(shí)例flow_x, i的最大總利用率。類似地,“B_x”可以用于表示針對(duì)flow_x的所有實(shí)例flow_x,i的最大總突發(fā)大小限制。
[0088]此外,“R_tot”可以用于表示所有應(yīng)用實(shí)例14之間的所有流實(shí)例的聚合的最大聚合流速率。同樣地,“可以用于表示所有應(yīng)用實(shí)例之間的所有流實(shí)例的聚合的最大突發(fā)大小限制。
[0089]記住上面的標(biāo)記,裝置28在每一個(gè)應(yīng)用實(shí)例i處例如以定期間隔執(zhí)行以下操作:通過以下方式來估計(jì)每一個(gè)flow_x的d_x, 1:例如對(duì)flow_x使用的協(xié)議會(huì)話的數(shù)量進(jìn)行計(jì)數(shù)或者估計(jì)flow_X近期的預(yù)期流速率(例如,假設(shè)將來的流速率等于當(dāng)前到達(dá)速率),或者如果最近已經(jīng)在flow_x中觀測(cè)到任何應(yīng)用消息,則將d_x,i設(shè)置為“1”,否則將d_x,i設(shè)置為“0”,其中,該二進(jìn)制方法可以特別有利于對(duì)來自負(fù)載均衡器20的業(yè)務(wù)進(jìn)行完全平均分發(fā)。
[0090]此外,每一個(gè)裝置28在每一個(gè)應(yīng)用實(shí)例i以定期間隔一一但是不一定是與用于需求估計(jì)的間隔相同的間隔一一執(zhí)行以下操作:
[0091]-“公布”應(yīng)用實(shí)例i處的所有流22的所有d_x,i值,其中,可以使用基于gossip的逆熵協(xié)議來完成公布;
[0092]-基于來自其他應(yīng)用實(shí)例的已知需求估計(jì)來計(jì)算應(yīng)用實(shí)例i處的所有流22的總體需求值,例如,給定flow_x的總體需求是D_x =所有應(yīng)用實(shí)例i = I至N上的所有d_x, i之和;以及
[0093]-調(diào)整應(yīng)用實(shí)例i處的每一個(gè)flow_x,i流的r_x, i,以進(jìn)行與其他實(shí)例處的狀態(tài)(需求)成比例的本地分配,例如,按照r_x, i = R_x*(d_x, i/D_x)來計(jì)算按流速率表達(dá)的每一個(gè)flow_x, i的本地利用率限制。
[0094]注意,上面的調(diào)整步驟表示了簡(jiǎn)單的示例性本地利用率限制確定。給定應(yīng)用實(shí)例14處的每一個(gè)流22的本地利用率限制可以包括:實(shí)施最小和最大流速率。此外,注意,還可以以類似地方式(例如,使用類似的線性表達(dá))來更新b_x,i和B_x。此外,在一些實(shí)施例中,例如,針對(duì)在每秒最大事務(wù)量限制情況下的業(yè)務(wù)整形,還可以調(diào)整r_tot和b_tot,例如,r_tot, i = R_tot*d_x, i針對(duì)所有x之和除以d_x, i針對(duì)所有x和所有N之和。
[0095]上面的操作對(duì)分布式系統(tǒng)16實(shí)施R_tot限制一一即,在關(guān)于應(yīng)用10的整體意義上??梢躁P(guān)于最大聚合突發(fā)大小等來完成類似的實(shí)施。
[0096]因此,仍然在圖6B的上下文中,將理解的是,SLA限制器42執(zhí)行多個(gè)操作步驟,包括第一操作步驟:根據(jù)關(guān)于相應(yīng)本地利用率速率定義的優(yōu)先級(jí)對(duì)應(yīng)用業(yè)務(wù)進(jìn)行分類一一一種形式的“監(jiān)管”。在緩存58、60中實(shí)現(xiàn)的給定優(yōu)先級(jí)隊(duì)列之一中聚合來自所有應(yīng)用業(yè)務(wù)流22的每一個(gè)分類的應(yīng)用消息。優(yōu)先級(jí)隊(duì)列是由裝置28執(zhí)行的聚合應(yīng)用業(yè)務(wù)調(diào)節(jié)的單個(gè)檢查站。優(yōu)先級(jí)隊(duì)列業(yè)務(wù)參數(shù)--例如,最大流速率和最大突發(fā)大小--實(shí)施可達(dá)業(yè)務(wù),包括所有輸入流22,本文示例為流22-1、22-2等,其中每一個(gè)流22對(duì)應(yīng)于不同的客戶端上下文。本文,“可達(dá)業(yè)務(wù)”可以是最大可能利用率,其可以由最大可能“負(fù)載”給出,或者通過尺寸標(biāo)注(dimens1ning)和/或經(jīng)營(yíng)策略來管理地定義,例如,許可配額。此類速率總計(jì)高達(dá)例如 R_tot。
[0097]將FLOWA的業(yè)務(wù)參數(shù)值與來自具有類似FLOWA——即,具有相同的應(yīng)用業(yè)務(wù)類型和客戶端域一一的其他應(yīng)用實(shí)例14的參數(shù)值進(jìn)行快速同步。利用先前介紹的標(biāo)記,可以將相似的流22表示為給定flow_x的不同實(shí)例,例如,應(yīng)用實(shí)例14-1處的flow_x, 1、應(yīng)用實(shí)例14-j處的flow_x, j、以及應(yīng)用實(shí)例14-k處的flow_x,k。本文,“x”表示公共客戶端上下文,并且和“k”表示接收屬于該客戶端上下文的應(yīng)用業(yè)務(wù)的應(yīng)用實(shí)例14中的不同應(yīng)用實(shí)例。
[0098]圖7圖示了在業(yè)務(wù)監(jiān)管器52和/或TB監(jiān)管SLA限制器54的實(shí)例“內(nèi)”執(zhí)行的處理。在一個(gè)或多個(gè)實(shí)施例中,由兩個(gè)此類處理單元使用的監(jiān)管算法是相同的。
[0099]圖8A和圖SB描述了令牌桶算法的示例性細(xì)節(jié),其中令牌桶算法在業(yè)務(wù)監(jiān)管器52和TB監(jiān)管SLA限制器54內(nèi)的子功能塊內(nèi)執(zhí)行。在圖示中,算法被表示為“方法800”。此夕卜,在這些子功能塊中運(yùn)行的算法可以是相同的,區(qū)別在于實(shí)體52以每一個(gè)客戶端流為基礎(chǔ)操作用戶的每客戶端流利用率限制,而實(shí)體54使用聚合利用率限制操作聚合業(yè)務(wù)流。因此,可以看到令牌桶處理方法800的兩個(gè)入口點(diǎn),即,入口點(diǎn)“B”(在圖8A中,針對(duì)實(shí)體52)和入口點(diǎn)“K”(在圖8B中,針對(duì)實(shí)體54),以及相應(yīng)的兩個(gè)出口點(diǎn)“C”(針對(duì)實(shí)體52)和“L”(針對(duì)實(shí)體54)。
[0100]方法800中的處理從以下步驟“開始”:接收指示到時(shí)間執(zhí)行令牌桶更新的信號(hào)(步驟I)。確定針對(duì)給定流22要添加到令牌桶的令牌的數(shù)量,并且這表示針對(duì)流22實(shí)施本地利用率限制(步驟2)。基于多個(gè)因素來對(duì)該確定作出決策,其中,多個(gè)因素包括例如自從最近更新以來的增量時(shí)間、業(yè)務(wù)服務(wù)或流類別等。步驟3包括:基于例如自從最近更新以來的時(shí)間、業(yè)務(wù)服務(wù)類別、當(dāng)前令牌桶緩存大小、最大突發(fā)速率等來確定要在涉及的令牌桶中設(shè)置的令牌的數(shù)量。利用做出的這些確定,步驟4-11概述了用于確定應(yīng)用消息是符合策略的還是不符合策略的示例性方法。
[0101]圖9描繪了在一個(gè)或多個(gè)實(shí)施例中在隊(duì)列處理器56中運(yùn)行的算法,其中該算法一般地被表示為“方法900”。所示的方法900包括處理步驟1-11,并且對(duì)每一個(gè)給定裝置28中的聚合消息流操作,并針對(duì)進(jìn)入進(jìn)入裝置28的應(yīng)用業(yè)務(wù)的每一項(xiàng)執(zhí)行,例如,對(duì)每一個(gè)新輸入的應(yīng)用消息執(zhí)行。
[0102]注意,流示意圖中的項(xiàng)“R”與圖11中所述的方法1100相對(duì)應(yīng),其是作為單獨(dú)過程被執(zhí)行的并且用于移除應(yīng)用業(yè)務(wù)的各項(xiàng)一一例如,包括進(jìn)入進(jìn)入裝置28和/或應(yīng)用實(shí)例14的應(yīng)用業(yè)務(wù)的各個(gè)請(qǐng)求或其他應(yīng)用消息一一如果隊(duì)列處理器56的隊(duì)列中的任意一個(gè)中存在多于一個(gè)消息的話。
[0103]在圖9中所示的處理的更詳細(xì)示例性解釋中,每一個(gè)輸入消息具有相關(guān)聯(lián)的優(yōu)先級(jí),在算法中使用該相關(guān)聯(lián)的優(yōu)先級(jí)來確定消息的服務(wù)的特性(例如,延遲、丟棄、重排序)。算法在兩個(gè)模式中操作。當(dāng)新消息到達(dá)時(shí),以下情況發(fā)生:
[0104]如果已經(jīng)存在排隊(duì)消息,則立即對(duì)消息進(jìn)行排隊(duì)?;谙⒌膬?yōu)先級(jí)來選擇隊(duì)列。
[0105]如果所有隊(duì)列為空,則檢查最近觀測(cè)到的業(yè)務(wù)(=消息的到達(dá)過程)以確定當(dāng)前消息是否在當(dāng)前消息所屬的流22的本地聚合利用率限制內(nèi)。該檢查基于本文詳細(xì)描述的令牌桶算法。該動(dòng)作對(duì)在彼此之后立即到達(dá)的消息實(shí)施可持續(xù)速率和最大突發(fā)大小。如果消息在本地聚合利用率限制內(nèi),則直接釋放該消息以便由應(yīng)用實(shí)例14進(jìn)行處理。如果消息違反限制,則將消息放入與其優(yōu)先級(jí)相匹配的隊(duì)列中。
[0106]當(dāng)對(duì)第一消息進(jìn)行排隊(duì)時(shí),計(jì)算直到可以將該消息釋放的時(shí)間段。根據(jù)速率限制(來自本地聚合利用率限制i)和自從允許上一個(gè)消息通過所經(jīng)過的時(shí)間來得到該時(shí)間段。(考慮經(jīng)過的時(shí)間防止施加太低的速率)。然后,該算法將調(diào)度睡眠,直到該時(shí)間段過去為止。
[0107]當(dāng)時(shí)間段已經(jīng)過去時(shí),從隊(duì)列之一中釋放請(qǐng)求。通過隊(duì)列的優(yōu)先級(jí)來確定從哪個(gè)隊(duì)列進(jìn)行釋放,與較低優(yōu)先級(jí)的隊(duì)列相比,以較高的概率選擇較高優(yōu)先級(jí)的隊(duì)列。如果所選擇的隊(duì)列為空,則選擇較低優(yōu)先級(jí)的隊(duì)列(重復(fù)該過程,直到找到消息為止,如果需要的話,“回繞”至較高優(yōu)先級(jí))。
[0108]如果在任何隊(duì)列中仍然存在消息,則調(diào)度新的睡眠,否則不進(jìn)行任何操作。
[0109]圖10示出了例如在速率計(jì)算器46內(nèi)執(zhí)行的更新會(huì)話表和令牌桶策略參數(shù)的方法1000可以看到處理步驟1-6,其中,基于裝置28與其對(duì)等裝置中的一個(gè)或多個(gè)之間的本地需求值交換來更新給定裝置28處的逆熵?cái)?shù)據(jù)結(jié)構(gòu)(aEDS)(步驟I),并且將更新的信息與標(biāo)識(shí)應(yīng)用/服務(wù)器、時(shí)間戳和版本信息一起寫入相應(yīng)會(huì)話表(步驟2和3)。處理繼續(xù)更新連接的客戶端12的本地利用率限制(其是經(jīng)由在業(yè)務(wù)監(jiān)管器52中實(shí)現(xiàn)的令牌桶處理來實(shí)施的)(步驟4),等待定義的aEDS更新間隔期滿(步驟5),并且