用于控制水平擴展軟件應(yīng)用中的利用率的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明大體上涉及分布式處理,具體地,涉及水平擴展(horizontally scaled)處理系統(tǒng)。
【背景技術(shù)】
[0002]在本文設(shè)想的類型的水平擴展系統(tǒng)中,在多個對等應(yīng)用實例中實現(xiàn)整個軟件應(yīng)用,每一個對等應(yīng)用實例提供了應(yīng)用的整個功能并且每一個對等應(yīng)用實例表示總應(yīng)用容量或性能能力的一部分。然而,用于管理來自客戶端池的應(yīng)用業(yè)務(wù)的現(xiàn)有解決方案基于通常對于水平擴展系統(tǒng)不成立的大量假設(shè)。
[0003]這種操作源自以下傳統(tǒng)假設(shè):在單個實例中執(zhí)行針對客戶端池的業(yè)務(wù)控制,例如,通過單個硬件服務(wù)器建立整個系統(tǒng),并且通過單個點來路由所有業(yè)務(wù),其中可以在該單個點處對業(yè)務(wù)進行觀測和控制。然而,在水平擴展系統(tǒng)中,例如由于故障、升級等,硬件和/或軟件實例可能在任意時間點來去。
[0004]可能更關(guān)鍵的是,從客戶端池向水平擴展應(yīng)用中的對等應(yīng)用實例分發(fā)業(yè)務(wù)可能導致一些應(yīng)用實例被過度利用而一些應(yīng)用實例未被充分利用。例如,給定客戶端或至少源自相同客戶端上下文的給定連接可能比其他客戶端或連接“更具粘性”。在這一方面,“粘性”連接是持久的并且與持續(xù)的應(yīng)用業(yè)務(wù)相關(guān)聯(lián)。
[0005]本文認為以循環(huán)“負載分發(fā)”方案向各個應(yīng)用實例指派來自不同客戶端池的應(yīng)用業(yè)務(wù)未考慮以下事實:由分布式應(yīng)用業(yè)務(wù)引起的粘性連接可能聚合在應(yīng)用實例中的一個或多個處。此外,在對等應(yīng)用實體之間同步業(yè)務(wù)控制參數(shù)的狀態(tài)在可用網(wǎng)絡(luò)帶寬和達到和/或維護同步狀態(tài)所需的消息數(shù)量方面可能是昂貴的。
【發(fā)明內(nèi)容】
[0006]本發(fā)明包括用于水平擴展應(yīng)用中的分布式業(yè)務(wù)控制的裝置和方法,其中,基于軟件的應(yīng)用被實現(xiàn)為多個對等應(yīng)用實例,每一個應(yīng)用實例提供應(yīng)用的總能力或容量的一部分。在每一個應(yīng)用實例處實例化或以其他方式實現(xiàn)包括分布式業(yè)務(wù)控制器的裝置,并且這些裝置共同操作以根據(jù)例如服務(wù)水平協(xié)議或SLA限制各個客戶端或附屬客戶端組對應(yīng)用的總利用率,并且還操作以防止應(yīng)用實例中的任意一個的不成比例利用率。有利地,根據(jù)本文的教導在分布式業(yè)務(wù)控制器之間使用有效信息傳播協(xié)議來完成這些操作。
[0007]在更詳細的示例中,本文的教導公開了控制單獨客戶端對軟件應(yīng)用的利用率的方法。應(yīng)用被實現(xiàn)為多個對等應(yīng)用實例,這些對等應(yīng)用實例從多個客戶端中的任意一個或多個客戶端接收應(yīng)用業(yè)務(wù),并且在每一個應(yīng)用實例處實現(xiàn)所述方法。
[0008]有了該理解,所述方法包括:將進入進入所述應(yīng)用實例的應(yīng)用業(yè)務(wù)分類為與所述客戶端中的不同客戶端和/或不同類型的應(yīng)用業(yè)務(wù)相對應(yīng)的流;以及關(guān)于所述應(yīng)用實例估計每一個流的本地需求值。所述方法還包括:與所述應(yīng)用實例中的一個或多個其他應(yīng)用實例交換本地需求信息。所述交換包括:發(fā)送針對所述應(yīng)用實例處的所述流所估計的本地需求值,以及接收所述應(yīng)用實例中的其他應(yīng)用實例處的所有相似流的相似估計的本地需求值。
[0009]根據(jù)該方法,在每一個應(yīng)用實例處使用交換的本地需求信息來確定應(yīng)用實例處的每一個流的總體需求值。關(guān)于應(yīng)用確定總體需求值。在這個意義上,在非限制性示例中可以將針對給定應(yīng)用實例處的給定流所確定的總體需求值理解為針對該應(yīng)用實例處的該流所估計的本地需求值和針對其他應(yīng)用實例處的所有相似流所估計的本地需求值之和。
[0010]有利地,所述方法繼續(xù)使用針對每一個流所確定的總體需求值來計算應(yīng)用實例處的流的本地利用率限制。
[0011]相應(yīng)地,所述方法還包括:根據(jù)是否超出所述流的本地利用率限制,將每一個流中的應(yīng)用業(yè)務(wù)標記為不符合策略業(yè)務(wù)或符合策略業(yè)務(wù)。該操作可以被理解為第一級監(jiān)管,在該第一級監(jiān)管中應(yīng)用了逐流利用率限制。
[0012]作為第二步或第二級監(jiān)管,所述方法附加地包括:確定所述應(yīng)用實例處的所有流的應(yīng)用業(yè)務(wù)的聚合是否超出本地聚合利用率限制。根據(jù)所述方法,基于是否超出所述本地聚合利用率限制和/或基于對符合策略業(yè)務(wù)和不符合策略業(yè)務(wù)的區(qū)分,控制對去往所述應(yīng)用實例的聚合應(yīng)用業(yè)務(wù)的緩存。例如,雖然可以響應(yīng)于不符合策略業(yè)務(wù)來約束單獨流,但是也可以是以下情況:對聚合應(yīng)用業(yè)務(wù)進行緩存涉及:至少在超出本地聚合利用率限制期間向符合策略業(yè)務(wù)和不符合策略業(yè)務(wù)應(yīng)用不同的緩存優(yōu)先級。
[0013]在本文教導的一個或多個實施例中使用包括分布式業(yè)務(wù)控制器和通信控制器的裝置實現(xiàn)上述方法及其變形或擴展。裝置可以是基于軟件的,例如,根據(jù)存儲在計算機可讀介質(zhì)中的計算機程序指令的執(zhí)行被實現(xiàn)為邏輯或功能電路。在示例性情況下,裝置被實現(xiàn)為每一個應(yīng)用實例的一部分,或者被實現(xiàn)為聯(lián)合主機操作系統(tǒng)環(huán)境中的應(yīng)用實例執(zhí)行的伴隨程序。
[0014]在示例性配置中,分布式業(yè)務(wù)控制器將進入進入其相關(guān)聯(lián)的應(yīng)用實例的應(yīng)用分類為流,并且對每一個流應(yīng)用第一級基于令牌桶的監(jiān)管。也即是說,將逐流令牌桶監(jiān)管方案應(yīng)用于每一個流中的業(yè)務(wù),以根據(jù)是否超出流的本地利用率限制將流中的應(yīng)用業(yè)務(wù)標記為符合策略的或不符合策略的,并且可選擇地,以每一個流為基礎(chǔ)應(yīng)用第一級業(yè)務(wù)調(diào)節(jié)(例如,通過丟棄來自流的應(yīng)用業(yè)務(wù)中的一些)。
[0015]根據(jù)由分布式業(yè)務(wù)控制器針對與該分布式業(yè)務(wù)控制器配對的應(yīng)用實例處的流所估計的本地需求值和由其他分布式業(yè)務(wù)控制器在其他應(yīng)用實例處針對所有相似流所估計的本地需求值來確定這些逐流利用率限制。也即是說,通過每一個應(yīng)用實例處的每一個流的分類參數(shù)一一例如,業(yè)務(wù)類型、客戶端域等一一來定義該流,并且具有相同分類參數(shù)的另一應(yīng)用實例處的任意流是相似流。因此,與任意給定流相關(guān)聯(lián)的總需求或總體需求取決于所有應(yīng)用實例之間的所有相似流的本地需求。
[0016]與分布式業(yè)務(wù)控制器配對的通信控制器交換本地需求信息,從而提供本地需求值在所有分布式業(yè)務(wù)控制器之間的傳播,從而使得能夠在考慮所有其他應(yīng)用實例處的相應(yīng)流需求的情況下計算準確的總體需求值并且以每一個流為基礎(chǔ)動態(tài)地調(diào)節(jié)本地利用率限制。
[0017]作為另一優(yōu)點,每一個分布式業(yè)務(wù)控制器向每一個應(yīng)用實例處的應(yīng)用業(yè)務(wù)的聚合一一即,組合應(yīng)用實例處的所有各流的聚合流一一應(yīng)用第二級監(jiān)管。聚合級的監(jiān)管可以涉及:根據(jù)是否超出本地聚合利用率限制來選擇性地調(diào)節(jié)聚合流。
[0018]根據(jù)獨立權(quán)利要求的本發(fā)明的效果是針對給定應(yīng)用實例處的給定流所準許的容量或其他應(yīng)用資源的比例隨著與該流相關(guān)聯(lián)的總體需求而改變。當然,本發(fā)明不限于這些或其他前述特征和優(yōu)點。實際上,本領(lǐng)域技術(shù)人員在閱讀以下詳細描述之后并且在查看附圖之后將認識到附加特征和優(yōu)點。
【附圖說明】
[0019]圖1是實現(xiàn)水平擴展應(yīng)用的分布式處理系統(tǒng)的一個實施例的框圖。
[0020]圖2是示出了圖1的分布式處理系統(tǒng)的示例性細節(jié)的框圖。
[0021]圖3是本文設(shè)想的分布式業(yè)務(wù)控制器的一個實施例的框圖。
[0022]圖4是圖3的分布式業(yè)務(wù)控制器的其他示例性細節(jié)的框圖。
[0023]圖5是本文設(shè)想的分布式業(yè)務(wù)控制方法的一個實施例的邏輯流程圖。
[0024]圖6A和圖6B是提供可以在分布式業(yè)務(wù)控制器中實現(xiàn)的業(yè)務(wù)分類器和逐流(per-flow)監(jiān)管布置的其他示例性細節(jié)的框圖。
[0025]圖7是圖示了基于將應(yīng)用業(yè)務(wù)標記為符合策略或不符合策略的逐流監(jiān)管的一個實施例的框圖。
[0026]圖8A、圖8B以及圖9_11是由分布式業(yè)務(wù)控制器根據(jù)本文教導的一個或多個實施例執(zhí)行的基于令牌桶的業(yè)務(wù)監(jiān)管的邏輯流程圖。
[0027]圖12是在分布式業(yè)務(wù)控制器之間交換本地需求信息的一個實施例的信號流程圖。
[0028]圖13是產(chǎn)生并發(fā)送同步(SYN)消息作為交換本地需求信息的一部分的一個實施例的邏輯流程圖。
[0029]圖14是接收并處理在分布式業(yè)務(wù)控制器處接收的特定消息類型作為交換本地需求信息的一部分的一個實施例的邏輯流程圖。
[0030]圖15是圖示了本文的分布式業(yè)務(wù)控制教導規(guī)定的分布式業(yè)務(wù)控制的示例的示意圖。
【具體實施方式】
[0031]圖1示出了基于軟件的應(yīng)用10,其在該討論中被稱作“應(yīng)用10”。客戶端池12-1、12-2等使用應(yīng)用10,并且將理解的是,每一個客戶端12-1、12-2等將在使用應(yīng)用10時消耗其總?cè)萘炕蚰芰Φ奶囟ú糠?。為了便于參考,在沒有后綴的情況下使用附圖標記12來一般地指代客戶端12-1、12-2等中的任意一個或多個。因此,術(shù)語“客戶端12”和“多個客戶端12”分別是指客戶端中的任意一個和客戶端中的任意兩個或更多個。
[0032]此外,如本文所使用的術(shù)語客戶端是“多含義”術(shù)語。通常,客戶端12包括某一軟件組件實例一一該軟件組件實例在系統(tǒng)設(shè)備或系統(tǒng)中被實例化一一該軟件組件實例產(chǎn)生去往應(yīng)用10的一種或多種應(yīng)用業(yè)務(wù)。示例性客戶端12可以產(chǎn)生多個不同消息類型,例如,創(chuàng)建、讀取、更新等,并且每一個消息類型可以被視為關(guān)于應(yīng)用10的各個業(yè)務(wù)“流”,其中每一個此類流可以通過服務(wù)水平協(xié)議或SLA來管理,其中,服務(wù)水平協(xié)議或SLA是在提供應(yīng)用10的組織與經(jīng)由一個或多個客戶端12利用應(yīng)用的訂制組織之間協(xié)商的。附屬于訂制組織的多個用戶可以運行多個相似客戶端12或多個不同類型的客戶端12,每一個客戶端12根據(jù)SLA條款利用應(yīng)用10,其中,SLA條款可應(yīng)用于由所有此類客戶端12對應(yīng)用10的共同利用。
[0033]記住上面提及的方案,可以看到,應(yīng)用10被實現(xiàn)為多個對等應(yīng)用實例14-1、14_2等。除非為了清楚起見而需要后綴,否則該討論將使用術(shù)語“應(yīng)用實例14”來一般地指代應(yīng)用實例14-1、14-2等中的任意給定應(yīng)用實例,并且將類似地使用術(shù)語“多個應(yīng)用實例14”來指代應(yīng)用實例14-1、14-2等中的任意給定兩個或更多個應(yīng)用實例。
[0034]每一個應(yīng)用實例14作為應(yīng)用10的副本操作,因此提供應(yīng)用10的整個功能,但是僅提供總應(yīng)用能力或容量的一部分。通過對等應(yīng)用實例14的集合以水平擴展形式表示可以根據(jù)每秒事務(wù)量等來測量的總能力或容量。應(yīng)用10(全體地)以及每一個應(yīng)用實例14將被理解為包括以下各項或由以下各項表示:在數(shù)字處理電路中實現(xiàn)的功能電路配置和一個或多個計算機系統(tǒng)上的相關(guān)聯(lián)存儲器,例如,運行操作系統(tǒng)的服務(wù)器,其中,應(yīng)用實例14在該操作系統(tǒng)中執(zhí)行。附圖以全體意義描繪了該處理電路,其被稱作“分布式處理系統(tǒng)16”。
[0035]客戶端12中的單個客戶端經(jīng)由通過一個或多個計算機網(wǎng)絡(luò)18 (例如,一個或多個公共數(shù)據(jù)網(wǎng)絡(luò)或私有數(shù)據(jù)網(wǎng)絡(luò),可以包括互聯(lián)網(wǎng),并且可以包括在其中支持虛擬專用網(wǎng)(VPN)連接)的通信耦合與應(yīng)用實例14中的單個應(yīng)用實例進行通信。每一個客戶端12向應(yīng)用10發(fā)送應(yīng)用業(yè)務(wù),其中,該業(yè)務(wù)包括例如根據(jù)定義協(xié)議發(fā)送的請求消息。負載均衡器20接收從客戶端池12輸入的應(yīng)用業(yè)務(wù),并且使用例如循環(huán)分發(fā)功能將其分發(fā)給應(yīng)用實例14中的相應(yīng)應(yīng)用實例,其中,進入進入負載均衡器20的每一個新應(yīng)用消息或一批新的應(yīng)用消息被分發(fā)給應(yīng)用實例14中的下一個。
[0036]因此,進入進入應(yīng)用實例14中的任意一個的應(yīng)用業(yè)務(wù)包括任意數(shù)量的應(yīng)用業(yè)務(wù)流22,如上所述。也即是說,針對任意給定應(yīng)用實例14,輸入的應(yīng)用業(yè)務(wù)可以包