專利名稱:客戶機服務器網(wǎng)絡的制作方法
技術領域:
本發(fā)明涉及客戶機服務器網(wǎng)絡,具體來講,涉及其中客戶機具有能夠處理其請求的多個備選服務器的網(wǎng)絡。
在這類客戶機服務器網(wǎng)絡中,在確定客戶機應該向哪個服務器節(jié)點發(fā)送給定請求時出現(xiàn)問題。處理這個問題的已知方法包括負載分擔,其中負載以循環(huán)方式分散在多個服務器上;以及工作機備用機方案,其中把一個服務器指定為工作機,請求一般發(fā)送到工作機,而另一個服務器為備用機,在工作機無法處理請求時,備用機就處理請求。當工作機再次能夠處理請求時,請求又發(fā)送到工作機。但是,沒有一種方法令人滿意。如果各種服務器的容量差異極大,則循環(huán)負載分擔不適用,因為這種方法沒有考慮相對的服務器大小。如果請求量超過單個服務器的容量,則工作機備用機方法不適用。
任何給定服務器的有效容量可能隨時間而顯著變化,例如因為服務器正在處理來自其它客戶機的請求,或者由于諸如維護活動、存檔之類的其它原因。
本發(fā)明旨在解決上述問題,并且提供對送往多個服務器的請求的改進處理。
根據(jù)本發(fā)明,提供一種把來自客戶機節(jié)點的請求分配到具有多個服務器的服務器系統(tǒng)中的一些服務器的方法,所述方法包括定期重復以下步驟測量各服務器的活動;根據(jù)所測量的服務器活動來評估多個服務器的相對負荷;以及根據(jù)相對負荷的評估來調整對多個服務器中各個服務器的請求分配;其中調整對各個服務器的請求分配包括根據(jù)所測量的服務器活動、多個服務器的平均活動以及分配給服務器的請求的現(xiàn)有比例來調整分配給各服務器的請求的比例。
本發(fā)明還提供一種用于把來自客戶機節(jié)點的請求分配給具有多個服務器的服務器系統(tǒng)中的一些服務器的系統(tǒng),所述系統(tǒng)包括位于客戶機節(jié)點的分配器,所述分配器包括用于測量各個服務器活動的裝置、用于根據(jù)所測量的服務器活動來評估多個服務器的相對負荷的裝置以及用于根據(jù)相對負荷的評估來調整對多個服務器中各個服務器的請求分配的裝置;其中分配調整裝置包括用于根據(jù)所測量的服務器活動、多個服務器的平均活動以及分配給服務器的請求的現(xiàn)有比例來調整分配給各服務器的請求的比例的裝置。
本發(fā)明的實施例的優(yōu)點在于,負載分配能夠考慮到各服務器的相對容量而在各服務器上均勻分布。
客戶機節(jié)點最好是包括負載控制器,用于把負載控制算法應用于分配到多個服務器中所有服務器的請求。其優(yōu)點在于,負載可得到控制,從而防止所有服務器過載,而且分配器使多個服務器看起來就象單個服務器。
最好是通過計算一個周期中服務器請求和響應的數(shù)量來測量服務器活動。這個周期最好是請求的總數(shù)。
相對負荷的評估最好是包括比較在抽樣周期中各服務器的服務器請求和響應。
服務器的請求分配最好是根據(jù)所測量的服務器活動、全部服務器的平均活動以及分配給服務器的請求的現(xiàn)有比例來調整。
最好是提供超越功能,從而把與前一個請求相關的請求發(fā)送到與前一個請求相同的服務器。
現(xiàn)在通過舉例并參照附圖來說明本發(fā)明的實施例,附圖中
圖1說明實施本發(fā)明的請求分配系統(tǒng)的示意圖;圖2是圖1的分配器的UML使用情況圖3是測量服務器負荷以評估相對負荷的UML類圖;圖4是“分配”使用情況的示例程序;圖5是“響應”使用情況的示例程序;圖6是“測量”使用情況的示例程序;圖7是“重新評估”使用情況的示例程序;圖8是“分配”使用情況的UML活動圖;圖9是說明過載影響的、較大服務器的響應和請求的曲線圖;圖10是說明過載影響的、較小服務器的請求和響應的曲線圖;圖11是流程圖,說明活動測量的第一實施例;圖12是流程圖,說明活動測量的第二實施例;以及圖13是流程圖,說明活動測量的第三實施例。
參照圖1,將要描述的實施例是基于各客戶機節(jié)點12內(nèi)的請求分配器單元10。請求分配器接收客戶機節(jié)點內(nèi)部產(chǎn)生的本地請求14以及通過外部接口接收的外部請求16。分配器在n個服務器之中分配服務器請求,這些服務器在圖中表示為服務器1(18)、服務器2(20)以及服務器n(22)??蛻魴C節(jié)點還包括運行負載控制算法的負載控制單元24。分配器確保對遠程服務器進行均勻加載。負載控制算法為分配器提供有效的前端處理。
圖1所示的體系結構使相同的負載控制能夠用于外部請求以及客戶機節(jié)點上本機發(fā)起的請求。另外,分配器使服務器網(wǎng)絡在負載控制算法看來就象單個節(jié)點一樣。從圖1可以看到,分配器在邏輯上設置在服務器和負載控制器之間。
當請求與較早的請求相關時,逐個請求地把負載分配到服務器是不起作用的。分配器包括超越功能,使請求的某個子集能夠被發(fā)送到同一個服務器。在服務器存儲從處理后續(xù)請求所需的第一個請求中導出的內(nèi)容時,這通常是必要的。
分配器的UML使用情況如圖2所示。本地應用或遠程客戶機26、時間28以及遠程服務器30表示為遠離該系統(tǒng)。該圖表明,分配器根據(jù)來自服務器的響應32來分配31服務器請求,并且根據(jù)分配和響應來進行一些測量34。隨著時間36來重新評估分配。
不管服務器請求的來源如何,無論在客戶機節(jié)點外部還是內(nèi)部,對于把服務器請求分配到一組可用服務器上的三個要求如下所述1.使可用服務器的負載盡量均勻;2.通過不對先前的負載不平衡作出過度反應而導致新的負載不平衡,避免服務器負載中的高頻振蕩;以及3.不管分配算法而允許超越請求保持在特定服務器上。
當后續(xù)請求要求已經(jīng)在處理前一個請求的服務器中創(chuàng)建的上下文數(shù)據(jù)時,調用要求的超越請求。對前一個請求的響應表明哪個服務器對其進行了處理。
所用的分配最好是與客戶機-服務器協(xié)議的特定細節(jié)無關,從而確保廣泛適用性。在將要描述的實施例中,比較對于不同服務器的測量結果以評估其相對負荷。然后再調整后續(xù)請求的分配,使服務器測量結果會聚到其平均值。這樣,重新平衡了服務器的負荷。這個方法不了解各個服務器是否過載,因為它是對負荷的相對測量,因此不會提供全面的控制機制。如果客戶機節(jié)點上涉及到要避免服務器過載,則客戶機節(jié)點可在分配器前面加入獨立的負載控制算法、如圖1的24所示。負載控制算法根據(jù)對全部服務器的總業(yè)務量的測量進行工作。適用于端接請求業(yè)務的服務器節(jié)點的負載控制方案應當同樣適用于具有請求分配器的客戶機節(jié)點。應該理解,負載控制不是必需的。
上述方法是基于對相對負荷的測量。可以測量業(yè)務量相關的量,例如請求和響應計數(shù)及其速度派生值、響應時間分布(例如平均值、第95個百分點和標準偏差)以及響應掛起的請求的數(shù)量。雖然這些都是通用測量,但它們或多或少都遇到區(qū)分正常和過載條件的閾值通常是協(xié)議和/或應用特定的問題。例如,對一個應用而言合乎需要的響應時間可能對于另一個應用卻是不可接受的。因此,基于針對絕對值的測試測量的設計不令人滿意。
除了基于相對負荷測量的方法之外,一些協(xié)議還包括讓服務器在過載時拒絕客戶機請求的明示功能。在分配器上對這些被拒絕的請求的區(qū)分和計數(shù)提供了可用來控制分配的另一組測量結果。
圖3至7說明分配器的一般UML類和程序圖。圖3是說明三個實體的UML類圖服務器38、請求40和響應42。服務器具有測量結果、比例的屬性,請求具有時標、事務處理標識和超越的屬性,響應具有時標和事務處理標識的屬性。服務器具有讀取和更新操作。
圖4說明“分配”使用情況的程序,其中客戶機或本地應用42以及遠程服務器44表示為在分配器系統(tǒng)之外。請求46被發(fā)送到分配器,并且對每個服務器對象實例執(zhí)行讀取操作48,從而獲取當前比例,其中包括接收來自服務器對象的響應50。然后根據(jù)相對負荷把請求分配52到適當?shù)倪h程服務器44。
圖5說明響應使用情況的程序。圖中,遠程服務器44把響應發(fā)送到分配器控制,分配器控制又把響應發(fā)送到客戶機或本地應用42。圖6說明“測量”使用情況的程序,其中在分配器控制和服務器對象之間進行對測量結果51的更新,并把應答56返回給分配器控制。
圖7說明“重新評估”使用情況的程序。這里的外部控制是時間58。屬于周期性事件的計時器到期時,由分配器從服務器對象讀取測量結果,并進行更新。這兩個操作接收來自服務器對象的應答,并在服務器對象的每個實例上被調用。
分配算法不能因服務器的添加和刪除而被破壞。雖然其它算法也是可行的,但最好是采用部分分配方案。在優(yōu)選方案下,服務器的比例表示為根據(jù)容量的比率。例如,在其中一個服務器的容量是另外兩個服務器的兩倍的三個服務器情況下,比率將表示為1∶2∶1。
分配給各服務器的部分的數(shù)量為P1、P2、P3...Pn。在上述1∶2∶1的情況下,P1=1,P2=2以及P3=3。分配算法從第一服務器到最后一個服務器以累計方式把這些數(shù)量相加,對每個區(qū)間記錄服務器標識。因此,范圍P1-P2分配到服務器2,P2-P3分配到服務器3,依此類推。對于每個服務器請求,產(chǎn)生范圍為0到∑Pr(r=1-n)的隨機數(shù)。范圍包含該隨機數(shù)的服務器是請求被發(fā)送到的服務器。
在所產(chǎn)生的隨機數(shù)等于區(qū)間邊界值之一的情況下,應用平分(tiebreaker)規(guī)則。
在分配器啟動時,它假定所有服務器具有相同的容量,并向各服務器分配相同的比例。不是應用值1,而是應用較大的值、如10,以便允許向下和向上調整。
圖8說明“分配”使用情況的UML活動圖。在60,把值B設置為零。在框62中,對各服務器重新說明服務器范圍。這包括以下步驟在64從各服務器對象讀取比例P;在66把范圍B到(B+P-1)分配給服務器;以及在68把B的值重新設置為B=B+P。然后在70產(chǎn)生隨機數(shù)R,并在72設置值X,使得X=R mod B。在74,選取其范圍包括X的服務器,然后在76向該服務器發(fā)送請求。
在以上說明中,已經(jīng)確定,選擇向哪個服務器發(fā)送請求應當基于服務器負荷的相對測量結果,以及采用基于服務器容量的算法來實現(xiàn)分配。以下說明涉及到服務器負荷的測量,并描述測量服務器負荷的三種可能方式響應時間測量、未完成的響應計數(shù)以及請求和響應計數(shù)。后一種方式尤其適合,但前兩種方法也是可行的。其它方法也是可行的,并且本領域的技術人員也會想到。
響應時間測量分配器可計算各服務器的響應時間分布。然后再通過直接比較所選測量值、例如平均值或第95個百分點來估算相對負荷。當服務器過載時,它應該在其響應時間中呈現(xiàn)急劇上升。在圖12的流程圖中說明了這種方案,圖中說明在步驟120中的響應時間測量,這種操作對全部服務器來執(zhí)行,然后是在步驟122中對響應時間分布進行比較。這個方式雖然可行,但卻有若干問題首先,各個服務器正常工作時的正常響應時間可能明顯不同,使得更難以區(qū)分過載的服務器。其次,必須收集一定的最小數(shù)量的響應時間抽樣值,然后才能對其統(tǒng)計分布進行可靠地評估。這使得抽樣周期過長,分配器對變化的反應過于緩慢。第三,分配器必須把響應與相關請求相聯(lián)系以獲取定時。
未完成的響應計數(shù)作為一個備選方案,分配器維護對發(fā)送到各服務器、沒有接收到至少一個響應的請求的數(shù)量的計數(shù)。由于這是連續(xù)測量,因此定期評估可以基于固定間隔或者請求的總數(shù)。當服務器變?yōu)檫^載時,應當表現(xiàn)出其未完成響應的增加。TCP負載控制基于這個原理。圖13中說明該過程,圖中說明,在步驟124中,對沒有接收到響應的請求計數(shù),以及在步驟126中,在一段時間上或者在請求總數(shù)中對這些計數(shù)進行比較。但是,存在兩個可能的問題。首先,該方法受到服務器響應時間之間任何正常差異的間接影響。這是根據(jù)下述基本排隊理論公式得出的平均并發(fā)性=每秒事務處理(tps)×平均響應時間因此,同樣難以區(qū)分受壓迫服務器與實質上較慢的服務器。
其次,分配器必須區(qū)分對請求的初始響應與后續(xù)響應,以便僅在發(fā)送了初始響應時才遞減未完成響應的計數(shù)。這難以實現(xiàn)。
請求和響應計數(shù)這種選擇是三種考慮方式中最優(yōu)選的。分配器在短抽樣周期上記錄發(fā)送到各服務器的請求的數(shù)量以及從各服務器收回的響應的數(shù)量。然后再通過比較抽樣周期中的請求和響應計數(shù)來估算相對負荷。該方法在圖11中進行說明,圖中,在100對服務器請求計數(shù),在步驟110對服務器響應計數(shù),以及在步驟112進行比較。對各服務器重復這個過程。
請求或響應的絕對數(shù)量在服務器之間可能因不同的容量而有所不同。但是,只要沒有任何服務器過載,各服務器的請求/響應比率應該幾乎相同。這取決于各服務器接收請求類型的相同混合,這對于大量請求是真的,但在包含極少請求的短周期上可能不可靠。因此,最好是由所發(fā)送的請求總數(shù)、而不是由時間周期來定義抽樣值。
對于可經(jīng)過比較以確定相對負荷的值存在許多備選者。請求與響應的直接比率只是一個備選者。下面是一些備選量及其理論范圍的非窮舉列表。在列表中,Rq為發(fā)送到服務器的理論請求的數(shù)量,而Rs為返回的響應數(shù)量。
1.Rq/Rs0→+∞]]>2.Rs/Rq0→+∞]]>3.Rq-Rs-∞→+∞]]>4.Rs-Rq-∞→+∞]]>5.Rq/(Rc+Rs)0→1]]>6.Rs/(Rs+Rc)0→1]]>7.(Rq-Rs)/(Rq+Rs)-1→+1]]>8.(Rs-Rq)/(Rq+Rs)-1→+1]]>在這些備選值中,第1-4號具有無限范圍,由抽樣周期具有零響應或請求的可能性引起。選項5和6更著重于請求或響應計數(shù)。理論表明,請求和響應計數(shù)之間的歸一化差是服務器相對負荷的最具信息性表示,表明選項7和8是最佳選擇。值的極性是一個考慮事項,也就是說它是隨負荷增加還是減少。憑直覺,該值應該隨負荷的增加而增加,偏向于選項7。但是,當大多數(shù)協(xié)議平均每個請求產(chǎn)生略多于一個響應時,則偏向于最后一個選項、即選項8,因為服務器測量結果在正常條件下通常是正的。
圖9和圖10說明兩個服務器在遇到不斷增加的業(yè)務量時的請求和響應計數(shù)。這兩個圖都是每秒消息(mps)與時間的曲線圖。圖9的服務器具有較大容量,而圖10的服務器具有較小容量。兩個服務器分擔相等的業(yè)務量。這些圖強調了當服務器達到其容量且變?yōu)槭軌浩葧r其響應速率如何達到穩(wěn)定狀態(tài)。圖9和圖10是基于平均每個請求1.5個響應的假設。
在圖10中,較小的服務器在時間t1開始達到穩(wěn)定狀態(tài)。這時,分配器應該開始把請求業(yè)務量轉移到較大的服務器上。
分配調整上文提到,重要的是不要對服務器分配的任何調整進行過度補償而建立振蕩。分配器定期地或者在一定請求數(shù)量之后將需要調整分配給各服務器的請求業(yè)務量的比例。目的是降低每個服務器所選測量值之間的差異。這可按照如下方式進行如果M1、M2、M3...Mn是為各服務器在最后一個抽樣周期計算的測量值,μ是它們的算術平均值,而P1、P2、P3...Pn是每個服務器當前所分配的比例,則分配給第r個服務器的新的比例一般由以下類型的公式給出Pr=f(Mr,μ,Pr)兩個備選公式及其理論范圍如下所述1.(1+(Mr-μ)/(|Mr|+|μ|))×Pc;0→2×Pr]]>2.(1-(Mr-μ)/(|Mr|+|μ|))×Pc;0→2×Pr]]>兩者之間的差異反映了在以上選項7和8之間的選擇中提到的極性選擇。這些公式產(chǎn)生與舊值成比例的新值,因而比例絕不允許因算術舍位而被調整為零。
可通過兩種方式之一來減少振蕩。第一,來自最后幾個抽樣周期的數(shù)據(jù)可以顯式組合,以便計算對下一個周期的比例的調整。這種方式有效地利用保留數(shù)據(jù)的滑動窗口。第二,來自先前所有樣值的數(shù)據(jù)可采用衰減公式來隱式組合。在這種方式下,第二周期調整的數(shù)據(jù)是實際第二周期數(shù)據(jù)與來自第一周期的數(shù)據(jù)的平均值。用于第三周期的數(shù)據(jù)是實際第三周期數(shù)據(jù)與用于第二周期的數(shù)據(jù)的平均值,等等。
所述實施例使得能夠以反映服務器的單獨容量并基于其相對負荷的方式把請求從客戶機節(jié)點分配到多個服務器。
對所述實施例的各種修改是可行的,并且本領域的技術人員會想到這些修改。例如,測量服務器活動的其它方法是可行的,而且可采納其它分配調整公式。但是,這些修改在所附權利要求書所定義的本發(fā)明的范圍之內(nèi)。
權利要求
1.一種把請求從客戶機節(jié)點分配到具有多個服務器的服務器系統(tǒng)中的一些服務器上的方法,所述方法包括定期重復以下步驟測量各個服務器的活動;根據(jù)所述測量的服務器活動來評估所述多個服務器的相對負荷;以及根據(jù)所述相對負荷的評估來調整對所述多個服務器中各個服務器的請求分配;其中調整對各個服務器的請求分配包括根據(jù)所測量的服務器活動、所述多個服務器上的平均活動以及分配給所述服務器的請求的現(xiàn)有比例來調整分配給各個服務器的請求的比例。
2.如權利要求1所述的方法,其特征在于,測量各個服務器的活動包括在抽樣周期中對送往所述多個服務器中每一個的服務器請求的數(shù)量進行計數(shù)以及對從各個服務器接收的服務器響應的數(shù)量進行計數(shù)。
3.如權利要求2所述的方法,其特征在于,所述抽樣周期為一段時間。
4.如權利要求2所述的方法,其特征在于,所述抽樣周期包括發(fā)送到所述多個服務器的請求的總數(shù)。
5.如權利要求2、3或4所述的方法,其特征在于,評估所述多個服務器的相對負荷包括比較在所述抽樣周期上所述多個服務器中每一個服務器的服務器請求和響應。
6.如權利要求1所述的方法,其特征在于,測量各個服務器的活動包括計算各個服務器的響應時間。
7.如權利要求6所述的方法,其特征在于,評估所述多個服務器的相對負荷包括比較所述多個服務器中每一個服務器的所述服務器響應時間的分布。
8.如權利要求1所述的方法,其特征在于,測量各個服務器的活動包括對發(fā)往各個服務器、但未收到響應的請求的數(shù)量進行計數(shù)。
9.如權利要求8所述的方法,其特征在于,評估所述多個服務器的相對負荷包括比較在一定的時間間隔上或在送往所有的所述多個服務器的請求總數(shù)中沒有得到響應的請求的數(shù)量。
10.如權利要求1所述的方法,其特征在于,調整請求分配包括組合來自先前的抽樣周期的分配數(shù)據(jù),以便計算在下一個抽樣周期中對分配的調整。
11.如權利要求1或10所述的方法,其特征在于,調整請求分配包括根據(jù)延遲公式組合來自先前的抽樣周期的數(shù)據(jù)。
12.如權利要求5所述的方法,其特征在于,通過比較比率(Rq-Rs)/(Rq+Rs)來比較所述相對負荷,其中Rq為發(fā)送到所述服務器的請求的數(shù)量,而Rs為從所述服務器返回的響應的數(shù)量。
13.如權利要求5所述的方法,其特征在于,通過比較比率(Rs-Rq)/(Rq+Rs)來比較所述相對負荷,其中Rq為發(fā)送到所述服務器的請求的數(shù)量,而Rs為從所述服務器返回的響應的數(shù)量。
14.一種用于把請求從客戶機節(jié)點分配到具有多個服務器的服務器系統(tǒng)中的一些服務器上的系統(tǒng),所述系統(tǒng)包括位于所述客戶機節(jié)點的分配器,所述分配器包括用于測量各個服務器的活動的裝置、用于根據(jù)所述測量的服務器活動來評估所述多個服務器的相對負荷的裝置以及用于根據(jù)所述相對負荷的評估來調整對所述多個服務器中各個服務器的請求分配的裝置;其中所述分配調整裝置包括用于根據(jù)所測量的服務器活動、所述多個服務器上的平均活動以及分配給所述服務器的請求的現(xiàn)有比例來調整分配給各個服務器的請求的比例的裝置。
15.如權利要求14所述的系統(tǒng),其特征在于,所述用于測量服務器活動的裝置包括用于在抽樣周期上對發(fā)送到所述多個服務器中每一個服務器的服務器請求的數(shù)量進行計數(shù)以及對從各個服務器接收的服務器響應的數(shù)量進行計數(shù)的計數(shù)器。
16.如權利要求15所述的系統(tǒng),其特征在于,所述相對負荷評估裝置包括用于在所述抽樣周期上比較所述多個服務器中每一個服務器的所述服務器請求和響應的裝置。
17.如權利要求14所述的系統(tǒng),其特征在于,所述活動測量裝置包括用于計算各個服務器的響應時間的計算裝置。
18.如權利要求17所述的系統(tǒng),其特征在于,所述相對負荷評估裝置包括用于比較所述多個服務器中每一個服務器的所述服務器響應時間分布的裝置。
19.如權利要求14所述的系統(tǒng),其特征在于,所述活動測量裝置包括用于對發(fā)往各個服務器、但未收到響應的請求的數(shù)量進行計數(shù)的計數(shù)器。
20.如權利要求19所述的系統(tǒng),其特征在于,所述相對負荷評估裝置包括比較器,用于比較在一定時間間隔上或在送往所有的所述多個服務器的請求總數(shù)中沒有得到響應的請求的數(shù)量。
21.如權利要求14所述的系統(tǒng),其特征在于,所述請求分配調整裝置包括組合器,用于組合來自先前的抽樣周期的分配數(shù)據(jù),以便計算在下一個抽樣周期中對分配的調整。
22.如權利要求17所述的系統(tǒng),其特征在于,用于比較所述服務器請求和響應的裝置比較比率(Rq-Rs)/(Rq+Rs),其中Rq為發(fā)送到所述服務器的請求的數(shù)量,而Rs為從所述服務器返回的響應的數(shù)量。
23.如權利要求17所述的系統(tǒng),其特征在于,用于比較所述服務器請求和響應的裝置比較比率(Rs-Rq)/(Rq+Rs),其中Rq為發(fā)送到所述服務器的請求的數(shù)量,而Rs為從所述服務器返回的響應的數(shù)量。
全文摘要
網(wǎng)絡中的客戶機節(jié)點與包括多個服務器的服務器系統(tǒng)進行通信??蛻魴C包括分配器,所述分配器定期測量服務器活動,評估服務器的相對負荷,以及調整請求分配,因而根據(jù)負荷評估來加載服務器。
文檔編號G06F13/00GK1589558SQ02822787
公開日2005年3月2日 申請日期2002年9月18日 優(yōu)先權日2001年9月18日
發(fā)明者S·I·馬丁 申請人:馬科尼英國知識產(chǎn)權有限公司