專利名稱:一種應用服務的負載均衡方法及系統(tǒng)的制作方法
技術領域:
本申請涉及網絡技術,特別是涉及一種應用服務的負載均衡方法及系統(tǒng)。
背景技術:
負載均衡(又稱為負載分擔),英文名稱為Load Balance,其意思就是將負載(工作任務)進行平衡、分攤到多個操作單元上進行執(zhí)行,例如Web服務器、FTP服務器、企業(yè)關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。通常,負載均衡會根據網絡的不同層次(網絡七層)來劃分。其中,第二層的負載均衡指將多條物理鏈路當作一條單一的聚合邏輯鏈路使用,這就是鏈路聚合(Trunking) 技術,它不是一種獨立的設備,而是交換機等網絡設備的常用技術?,F代負載均衡技術通常操作于網絡的第四層或第七層,這是針對網絡應用的負載均衡技術,它完全脫離于交換機、 服務器而成為獨立的技術設備。這也是本文現在要討論的對象。負載均衡有兩方面的含義第一層含義是,單個重負載的運算分擔到多臺節(jié)點設備上做并行處理,每個節(jié)點設備處理結束后,將結果匯總,返回給用戶,系統(tǒng)處理能力得到大幅度提高,這就是我們常說的集群(clustering)技術。第二層含義是大量的并發(fā)訪問或數據流量分擔到多臺節(jié)點設備上分別處理,減少用戶等待響應的時間,這主要針對Web 服務器、FTP服務器、企業(yè)關鍵應用服務器等網絡應用。這里主要討論第二層含義所指的負載均衡。目前在很多網絡服務中,現有網絡的各個核心部分隨著用戶與業(yè)務量的提高,訪問量和數據流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在此情況下,如果扔掉現有設備去做大量的硬件升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業(yè)務量的提升時,這又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能滿足當前業(yè)務量增長的需求。基于此,目前需要解決的問題是提供一種適用于網絡服務的負載均衡方法,能夠在完成同樣功能的多個網絡設備之間實現業(yè)務量的合理分配,而不至于出現一臺設備過忙,其他設備未能充分發(fā)揮其作用的情況。
發(fā)明內容
本申請?zhí)峁┝艘环N應用服務的負載均衡方法及系統(tǒng),以解決目前網絡服務中的負載均衡問題。為了解決上述問題,本申請公開了一種應用服務的負載均衡方法,包括不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;
依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。優(yōu)選的,所述性能數據包括內存使用信息,和/或,CPU使用信息;所述應用程序運行數據包括實際在線人數,和/或正在下載的應用程序數,和/或正在下載的數據量,和/ 或實際連接數。優(yōu)選的,所述方法還包括通過路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息。優(yōu)選的,所述方法還包括定時獲取路由表中后端服務器的運行狀態(tài)信息;依據所述運行狀態(tài)信息檢測相應的后端服務器是否異?;蚴?,并將異常或失效的后端服務器的配置信息從路由表中刪除。優(yōu)選的,所述方法還包括通過向所述路由表中添加后端服務器的配置信息,動態(tài)添加可分配的后端服務器。優(yōu)選的,所述方法還包括預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。優(yōu)選的,所述方法還包括每個后端服務器上預先配置了相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或最大內存使用信息、和/或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。優(yōu)選的,所述定時獲取后端服務器的當前負載信息之前,還包括根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議。優(yōu)選的,所述定時獲取后端服務器的當前負載信息,包括后端服務器提供監(jiān)控接口,通過所述監(jiān)控接口定時獲取后端服務器的當前負載信息。優(yōu)選的,所述依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由,包括依據每次計算的權重調整后端服務器的分配概率;按照所述分配概率隨機選擇后端服務器將客戶端的接入請求進行路由。本申請還提供了一種應用服務的負載均衡系統(tǒng),包括負載查詢模塊,用于不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;權重計算模塊,用于在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;負載調整模塊,用于依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。
優(yōu)選的,所述性能數據包括內存使用信息,和/或,CPU使用信息;所述應用程序運行數據包括實際在線人數,和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或正在下載的應用程序數,和/或正在下載的數據量,和/或實際連接數。優(yōu)選的,所述系統(tǒng)還包括負載維護模塊,用于通過路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息。優(yōu)選的,所述系統(tǒng)還包括動態(tài)刪除模塊,用于定時獲取路由表中后端服務器的運行狀態(tài)信息;依據所述運行狀態(tài)信息檢測相應的后端服務器是否異?;蚴?,并將異?;蚴У暮蠖朔掌鞯呐渲眯畔穆酚杀碇袆h除。優(yōu)選的,所述系統(tǒng)還包括動態(tài)添加模塊,用于通過向所述路由表中添加后端服務器的配置信息,動態(tài)添加可分配的后端服務器。優(yōu)選的,所述系統(tǒng)還包括第一訪問控制模塊,用于預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/或最大內存使用信息、和/或最大CPU 使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。優(yōu)選的,所述系統(tǒng)還包括第二訪問控制模塊,用于每個后端服務器上預先配置相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或最大內存使用信息、和 /或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。優(yōu)選的,所述系統(tǒng)還包括通信配置模塊,用于根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議。與現有技術相比,本申請包括以下優(yōu)點首先,本申請針對高并發(fā)的客戶端請求,通過不斷獲取后端服務器的當前負載信息,并依據所述當前負載信息計算后端服務器的權重,然后依據每次計算的權重調整后端服務器的分配。簡而言之,本申請在客戶端需要接入某個應用服務的時候,首先請求接入分發(fā)(dispatch)服務,該分發(fā)服務會根據后端服務器的負載情況(如實際在線人數等),動態(tài)調整分發(fā)策略,動態(tài)地返回后端相對空閑的服務器給客戶端接入。與傳統(tǒng)的應用服務的負載均衡方法相比,本申請能夠在完成同樣功能的多個網絡設備之間實現業(yè)務量的合理分配,而不至于出現一臺設備過忙,其他設備未能充分發(fā)揮其作用的情況。其次,本申請還能夠定時從后端服務器獲取其運行狀態(tài),如果發(fā)現某個后端服務器的狀態(tài)異?;蛞呀浭?,可以實時地從路由表中移除,避免再將該后端服務器分配給客戶端。相應的,也可以通過在路由表中添加后端服務器的配置信息,而動態(tài)加入后端服務器供分配。再次,本申請由于能夠定時獲取后端服務器的負載情況,因此當某個后端服務器的負載接近最大處理能力時,可以對其進行訪問控制,即不再將客戶端請求路由給該服務器,從而有效地保護后端服務。再次,本申請中的分發(fā)(dispatch)服務器基于Erlang框架創(chuàng)建,可以不局限后端服務的類型,通過動態(tài)配置分發(fā)(dispatch)服務器與后端服務器通信的交互協議,滿足不同類型的后端服務。
當然,實施本申請的任一產品不一定需要同時達到以上所述的所有優(yōu)點。
圖I是本申請實施例所述一種應用服務的負載均衡系統(tǒng)的網絡架構圖;圖2是本申請實施例所述一種應用服務的負載均衡方法流程圖;圖3是本申請實施例所述一種應用服務的負載均衡系統(tǒng)的結構圖。
具體實施例方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本申請作進一步詳細的說明。本申請所述的負載均衡主要指大量的并發(fā)訪問或數據流量分擔到多臺節(jié)點設備上分別處理,減少用戶等待響應的時間,這主要針對Web服務器、FTP服務器、企業(yè)關鍵應用服務器等網絡應用。本申請在客戶端需要接入某個應用服務的時候,首先請求接入分發(fā)(dispatch) 服務,該分發(fā)服務會根據后端服務器的負載情況(如實際在線人數等),動態(tài)調整分發(fā)策略,動態(tài)地返回后端相對空閑的服務器給客戶端接入。下面通過實施例首先介紹本申請的網絡架構。參照圖I所示,是本申請實施例所述一種應用服務的負載均衡系統(tǒng)的網絡架構圖。本申請實施例所述的負載均衡主要通過分發(fā)(dispatch)服務器實現,多個客戶端與所述分發(fā)(dispatch)服務器連接,分發(fā)(dispatch)服務器與多臺后端服務器連接,其中每臺后端服務器能夠完成冋樣的業(yè)務功能。當某客戶端發(fā)起接入應用服務的請求時,該接入請求首先路由到所述分發(fā)服務器,分發(fā)服務器根據后端服務器的負載情況動態(tài)調整分配策略,并根據當前的分配策略選擇一臺服務器,將該接入請求路由到該服務器上處理。圖I所示的負載均衡網絡架構適用于各種網絡服務,例如頂(Instant Messenger,即時通訊)服務、云查殺服務、云盤服務、Push Service服務等等?;趫D1,下面通過圖2所示實施例對本申請所述方法的實現流程進行詳細說明。參照圖2所示,是本申請實施例所述一種應用服務的負載均衡方法流程圖。以頂業(yè)務為例,針對大量頂客戶端的高并發(fā)業(yè)務請求,分發(fā)(dispatch)服務器將按照以下步驟進行負載均衡處理步驟201,不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;簡而言之,提供應用服務的應用程序可分為客戶端程序和服務器端的后臺程序, 所述終端應用程序即是指客戶端程序,所述后端服務器的應用程序即是指后臺程序,兩者配合運行提供應用服務。
所述定時獲取可以是分發(fā)服務器主動查詢獲取,也可以是被動獲取,即后端服務器定時上報自己的負載情況。本申請實施例將采用主動獲取的方式,具體如下每臺后端服務器可以提供自己的監(jiān)控接口,分發(fā)服務器可以自己編寫插件,該插件可以通過所述監(jiān)控接口定期獲取每臺后端服務器的負載情況。所述當前負載信息表示后端服務器在每個獲取周期的實時負載情況,負載信息可包括應用程序運行數據,或者包括應用程序運行數據和性能數據,或者包括其他可反映應用程序運行情況的數據。其中,所述性能數據是指能夠反映后端服務器軟硬件性能的數據,可包括內存使用信息,和/或,CPU使用信息等。所述應用程序運行數據是指能夠反映后端服務器中應用程序的運行情況的數據,可包括實際在線人數,和/或正在下載的應用程序數,和/或正在下載的數據量,和/或實際連接數等。這些負載信息都是動態(tài)變量數據,都會隨著時間而實時改變。其中,在IM應用中,實際在線人數能夠很合理地衡量后端服務器的實際負載情況,通過統(tǒng)計實際在線人數,可以剔除從統(tǒng)計開始到當前時刻所有統(tǒng)計出來的在線人數中, 當前時刻實際在線的人數,而不是從開始到現在的統(tǒng)計數據,因為在這個過程中有些客戶端可能已經下線。例如,從t時刻到tl時刻的一段時間內,總共有100個客戶端連接上后端服務器,但是相繼有30人下線,因此在tl時刻的實際在線人數是70,而不是曾經與服務器建立過連接的100人。在多媒體下載應用,如音樂、視頻、電影電視等網絡下載中,正在下載的應用程序數是指統(tǒng)計下載列表中當前正在下載的應用程序數,不包括已經下載完畢和下載列表中未開始下載的應用程序數,因此正在下載的應用程序數也能夠合理地衡量后端服務器的實際負載情況。進一步的,在應用程序的下載過程中,每個應用程序下載的數據量多少也會影響后端服務器的負載,因此也可以統(tǒng)計出每個正在下載的應用程序的下載數據量,然后累加, 就可以得到正在下載的所有應用程序的數據量,該數據量也能夠合理地衡量后端服務器的實際負載情況。此外,在其他連接多個客戶端的應用中,通過統(tǒng)計實際連接數也可以反映出后端服務器的實際負載情況。所述實際連接數是指與后端服務器保持連接并進行交互的客戶端數,不包含曾經連接過服務器但已經暫時或永久斷開連接的客戶端,也不包含任務隊列中等待與服務器建立連接的客戶端。內存使用信息和CPU使用信息可從服務器的性能方面衡量了后端服務器的負載情況,服務器處理的業(yè)務不同,所耗費的內存和CPU也是不同的,因此無論業(yè)務量的大小如何,通過服務器的內存和/或CPU使用信息可以反映出一臺服務器在當前的實際負載情況。 具體的,所述內存或CPU的使用信息可以表示為內存或CPU的使用率,或者表示為已經使用的內存或CPU大小等。此外,負載信息除以上列舉的三種之外,還可以包含磁盤的讀寫、網卡的讀寫等參數信息。步驟202,在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權
即在每個獲取周期內,每次獲取到負載信息后,都會依據負載情況對每臺服務器的權重進行計算。當然,如果一臺后端服務器的負載情況沒有變化,為了節(jié)省計算,也可以直接使用最近一次的權重計算結果。在計算權重時,可采用下述的計算方法設定實際在線人數以Xl表示,其權值為a ;內存使用信息以x2表示,其權值為b ; CPU使用信息以X3表示,其權值為C ;按照以下公式計算得到一臺后端服務器的總權重Y ;Y= I-(xl X a+x2 Xb+x3 X c) 其中,“ I-”表示權重高的服務器優(yōu)先分配。當然,上述計算方法僅是舉例說明,可以采用其他的權重計算,本申請對此不做限定。步驟203,依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。在每個獲取周期內,與上一周期相比,如果后端服務器的權重有變化,就需要重新調整服務器的分配,因為每次的分配是依據權重而完成。例如,總共有A、B、C三臺后端服務器,在上一獲取周期中,按照權重由高到低的排序是B、A、C,權重高的服務器比權重低的服務器處理更多的業(yè)務請求,因此服務器B分配的業(yè)務請求較多,服務器A其次,服務器C最少。在下一獲取周期中,按照權重由高到低的排序變更為C、A、B,因此此時服務器C分配的業(yè)務請求較多,服務器A其次,服務器B最少。具體的,步驟203可以包含以下兩個子步驟子步驟1,依據每次計算的權重調整后端服務器的分配概率;按照權重高的服務器比權重低的服務器處理更多業(yè)務請求的原則,權重高的服務器得到的分配機會較多,權重低得服務器得到的分配機會相對較少。如果后端服務器的權重有調整,就需要相應調整分配概率。例如,按照權重由高到低,服務器A的權重為O. 5,服務器B的權重為O. 3,服務器 C的權重為O. 2,則相應的分配概率依次是50%、30%和20%。如果權重從高到低調整為服務器B是O. 4、服務器C是O. 3、服務器A是O. 3,則相應的分配概率依次調整為40%、30%、 30%。子步驟2,按照所述分配概率隨機選擇后端服務器將客戶端的接入請求進行路由。在負載均衡過程中,每次分配服務器是依據上述的分配概率隨機進行,即每次隨機選擇一臺后端服務器,但總體保持各服務器的隨機分配概率。例如,在某一獲取周期內, 服務器A、B、C的分配概率是50%、30%和20%,則總共分配10次請求,其中5次請求分配給服務器A處理,3次請求分配給服務器B處理,2次請求分配給服務器C處理。在選定某臺后端服務器后,可以將當前的客戶端的接入請求路由給所選定的這臺服務器。綜上所述,由上述流程可以看出,上述的適用于各種應用服務的負載均衡方法能夠根據后端服務器的負載情況,動態(tài)調整分發(fā)策略,動態(tài)地返回后端相對空閑的服務器給客戶端接入。與傳統(tǒng)的應用服務的負載均衡方法相比,上述方法能夠在完成同樣功能的多個網絡設備之間實現業(yè)務量的合理分配,而不至于出現一臺設備過忙,其他設備未能充分發(fā)揮其作用的情況。此外,分發(fā)服務器除了可以采用圖2所示的負載均衡方法外,也可以采用以下幾種負載均衡方法中的任意一種(I)輪詢法在一個任務隊列里,隊列的每個成員(節(jié)點)都具有相同的地位,輪詢法簡單地在這組成員中順序輪轉選擇。在負載均衡環(huán)境中,分發(fā)服務器將新的請求輪流發(fā)給任務隊列中的下一節(jié)點,如此連續(xù)、周而復始,每個集群的節(jié)點都在相等的地位下被輪流選擇。輪詢法的活動是可預知的,每個節(jié)點被選擇的機會是1/N,因此很容易計算出節(jié)點的負載分布。輪詢法典型的適用于集群中所有節(jié)點的處理能力和性能均相同的情況。(2)最少連接法在最少連接法中,分發(fā)服務器紀錄目前所有的活躍連接,把下一個新的請求發(fā)給當前含有最少連接數的節(jié)點。這種方法比較適合后端業(yè)務相同,機器配置相同,并且每個連接負載基本類似的服務,比如IM業(yè)務。(3)加權輪詢調度法加權輪詢調度(Weighted Round-Robin Scheduling)方法用相應的權值表示節(jié)點的處理性能,根據權值的高低順序并按照輪詢的方式將任務請求分配到各節(jié)點。權值高的結點比權值低的結點處理更多的任務請求,相同權值的結點處理相同份額的請求。在整個業(yè)務處理過程中,這種加權輪詢調度法對節(jié)點處理性能的權值設置是固定的,不會隨著節(jié)點實際性能的變化而修改權值,但是圖2所示的方法可以根據節(jié)點的實際負載情況動態(tài)修改權值,動態(tài)進行請求的分配。基于以上內容,下面通過另一個實施例進行說明。在該實施例中,分發(fā)服務器除可以采用圖2所示的負載均衡方法外,還具有動態(tài)添加、動態(tài)刪除與其連接的后端服務器,以及根據后端服務器的負載情況進行后端訪問控制等功能。下面分別詳細說明。分發(fā)服務器采用路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息,所述配置信息包括服務器的IP地址、端口配置等信息。 在每個獲取周期內,分發(fā)服務器按照所述路由表獲取路由表中記錄的后端服務器的負載情況,并動態(tài)地進行負載調整?;谒雎酚杀淼木S護,分發(fā)服務器還具有以下特點I、動態(tài)刪除后端服務器具體包含以下兩個子步驟子步驟1,定時獲取路由表中后端服務器的運行狀態(tài)信息;子步驟2,依據所述運行狀態(tài)信息檢測相應的后端服務器是否異?;蚴?,并將異?;蚴У暮蠖朔掌鞯呐渲眯畔穆酚杀碇袆h除。所述運行狀態(tài)信息可以檢測出后端服務器是否與分發(fā)服務器保持通信,通信狀態(tài)是否正常,等等。如果某臺后端服務器由于各種原因而發(fā)生故障(即異常)或完全宕機(即失效),通過這種定期的檢測,就可以立即發(fā)現并自動從路由表中刪除,避免再將該后端服務器分配給客戶端。上述輪詢法雖然也可以通過修改配置的方法刪除失效的后端服務器,但是這種修
11改之后,擴散需要時間,比如后端的一臺服務器停機,修改配置使其生效需要一定時間,這段時間可能會把這臺失效的服務器繼續(xù)路由給用戶。但是分發(fā)服務器采用的這種定期檢測、實時刪除的方法,可以動態(tài)地處理失效的機器。2、動態(tài)添加后端服務器通過向所述路由表中添加后端服務器的配置信息,可以動態(tài)添加可分配的后端服務器。在后端現有的服務器不能滿足處理需要的情況下,可以按照上述方式動態(tài)添加新的服務器。這種動態(tài)添加的方式也可以立即生效,無需等待一定時間。3、后端訪問控制可以根據后端機器的實際在線人數、應用程序的下載情況、CPU、內存等負載信息, 動態(tài)計算并決定是否路由請求給后端服務器,從而有效地保護后端的服務。這種對后端的訪問控制可采用以下兩種實現方式一種方式是預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。這種方式下,分發(fā)服務器每次獲取到后端服務器的負載信息后,比較當前的實際在線人數是否超過最大在線人數,如果超過,則表示滿載需要進行控制保護,不再給該服務器分配請求。和/或,比較當前正在下載的應用程序的個數是否超過最大下載個數,如果超過, 則需要控制保護。和/或,比較當前正在下載的應用程序的總下載量是否超過最大下載數據量,如果超過,則需要控制保護。和/或,比較當前的內存使用信息是否接近或超過最大內存使用信息,如4G的內存當已占用3. 7G時表示滿載,需要控制保護。和/或,比較當前的CPU使用信息是否接近或超過最大CPU使用信息,如最大CPU 使用率是85 %,如果當前CPU使用率為83 %則表示滿載,需要控制保護。另一種方式是每個后端服務器上預先配置了相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;分發(fā)服務器定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。所述第二種方式下,是否滿載的判斷由后端各臺服務器完成,并將判斷結果反饋給分發(fā)服務器,分發(fā)服務器依據是否滿載的結果調整訪問控制策略。4、不局限后端服務的類型分發(fā)服務器可以基于Erlang框架創(chuàng)建,Erlang是一種面向并發(fā)(Concurrency Oriented)、面向消息(Message Oriented)的函數式(Functional)編程語言。面向并發(fā)說明Erlang支持大規(guī)模的并發(fā)應用,可以在應用中處理成千上萬的并發(fā),而不相互影響。面向消息,是為并發(fā)服務。在Erlang的世界里,每個處理都是獨立的個體,他們之間的交互僅僅靠消息,因此不會有死鎖?;贓rlang框架特有的靈活性,可以通過編寫組件的形式進行擴展,后端可以是任意類型的服務,不局限服務的類型,只要提供負載查詢的相關接口,就可以使用該框架做負載均衡。因此,在分發(fā)服務器定時獲取后端服務器的當前負載信息之前,還包括以下步驟根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議??傊?,通過動態(tài)配置分發(fā)(dispatch)服務器與后端服務器通信的交互協議,滿足不同類型的后端服務。需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請并不受所描述的動作順序的限制,因為依據本申請,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本申請所必需的。基于上述方法實施例的說明,本申請還提供了相應的應用服務的負載均衡系統(tǒng)實施例。參照圖3所示,是本申請實施例所述一種應用服務的負載均衡系統(tǒng)的結構圖。所述負載均衡系統(tǒng)可設置在分發(fā)服務器上實現應用服務的負載均衡,所述負載均衡系統(tǒng)可包含以下模塊負載查詢模塊10,用于不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;權重計算模塊20,用于在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;負載調整模塊30,用于依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。其中,所述性能數據可包括內存使用信息,和/或,CPU使用信息;所述應用程序運行數據包括實際在線人數,和/或正在下載的應用程序數,和/或正在下載的數據量,和/ 或實際連接數。其中,各后端服務器提供監(jiān)控接口,負載查詢模塊10可通過所述監(jiān)控接口定時獲取后端服務器的當前負載信息。所述負載調整模塊30可依據每次計算的權重調整后端服務器的分配概率;然后, 按照所述分配概率隨機選擇后端服務器將客戶端的接入請求進行路由。上述應用服務的負載均衡系統(tǒng)能夠在完成同樣功能的多個網絡設備之間實現業(yè)務量的合理分配,而不至于出現一臺設備過忙,其他設備未能充分發(fā)揮其作用的情況。
13
基于圖3的實施例,在另一系統(tǒng)實施例中,所述負載均衡系統(tǒng)還可以包括其他模塊,具體如下可選地,所述負載均衡系統(tǒng)還可以包括以下模塊負載維護模塊,用于通過路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息??蛇x地,所述負載均衡系統(tǒng)還可以包括以下模塊動態(tài)刪除模塊,用于定時獲取路由表中后端服務器的運行狀態(tài)信息;依據所述運行狀態(tài)信息檢測相應的后端服務器是否異?;蚴В惓;蚴У暮蠖朔掌鞯呐渲眯畔穆酚杀碇袆h除。可選地,所述負載均衡系統(tǒng)還可以包括以下模塊動態(tài)添加模塊,用于通過向所述路由表中添加后端服務器的配置信息,動態(tài)添加可分配的后端服務器??蛇x地,所述負載均衡系統(tǒng)還可以包括以下模塊第一訪問控制模塊,用于預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制??蛇x地,所述負載均衡系統(tǒng)還可以包括以下模塊第二訪問控制模塊,用于每個后端服務器上預先配置相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制??蛇x地,所述負載均衡系統(tǒng)還可以包括以下模塊通信配置模塊,用于根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議。對于上述負載均衡系統(tǒng)實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,上文中的“和/或”表示本文既包含了 “和”的關系,也包含了 “或”的關系, 其中如果方案A與方案B是“和”的關系,則表示某實施例中可以同時包括方案A和方案 B ;如果方案A與方案B是“或”的關系,則表示某實施例中可以單獨包括方案A,或者單獨包括方案B。
以上對本申請所提供的一種應用服務的負載均衡方法及系統(tǒng),進行了詳細介紹, 本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
權利要求
1.一種應用服務的負載均衡方法,其特征在于,包括不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。
2.根據權利要求I所述的方法,其特征在于所述性能數據包括內存使用信息,和/或,CPU使用信息;所述應用程序運行數據包括實際在線人數,和/或正在下載的應用程序數,和/或正在下載的數據量,和/或實際連接數。
3.根據權利要求I所述的方法,其特征在于,還包括通過路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息。
4.根據權利要求3所述的方法,其特征在于,還包括定時獲取路由表中后端服務器的運行狀態(tài)信息;依據所述運行狀態(tài)信息檢測相應的后端服務器是否異常或失效,并將異常或失效的后端服務器的配置信息從路由表中刪除。
5.根據權利要求3所述的方法,其特征在于,還包括通過向所述路由表中添加后端服務器的配置信息,動態(tài)添加可分配的后端服務器。
6.根據權利要求I至3任一所述的方法,其特征在于,還包括預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/ 或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。
7.根據權利要求I至3任一所述的方法,其特征在于,還包括每個后端服務器上預先配置了相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。
8.根據權利要求I至3任一所述的方法,其特征在于,所述定時獲取后端服務器的當前負載信息之前,還包括根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議。
9.根據權利要求I所述的方法,其特征在于,所述定時獲取后端服務器的當前負載信息,包括后端服務器提供監(jiān)控接口,通過所述監(jiān)控接口定時獲取后端服務器的當前負載信息。
10.根據權利要求I所述的方法,其特征在于,所述依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由,包括依據每次計算的權重調整后端服務器的分配概率;按照所述分配概率隨機選擇后端服務器將客戶端的接入請求進行路由。
11.一種應用服務的負載均衡系統(tǒng),其特征在于,包括負載查詢模塊,用于不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;其中,所述應用程序運行數據是后端服務器的應用程序的運行數據,所述后端服務器為終端應用程序提供網絡服務,所述終端應用程序與后端服務器的應用程序對應同一應用服務;權重計算模塊,用于在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;負載調整模塊,用于依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。
12.根據權利要求11所述的系統(tǒng),其特征在于所述性能數據包括內存使用信息,和/或,CPU使用信息;所述應用程序運行數據包括實際在線人數,和/或正在下載的應用程序數,和/或正在下載的數據量,和/或實際連接數。
13.根據權利要求11所述的系統(tǒng),其特征在于,還包括負載維護模塊,用于通過路由表維護所有可分配的后端服務器,所述路由表中記錄了所有可分配的后端服務器的配置信息。
14.根據權利要求13所述的系統(tǒng),其特征在于,還包括動態(tài)刪除模塊,用于定時獲取路由表中后端服務器的運行狀態(tài)信息;依據所述運行狀態(tài)信息檢測相應的后端服務器是否異?;蚴?,并將異?;蚴У暮蠖朔掌鞯呐渲眯畔穆酚杀碇袆h除。
15.根據權利要求13所述的系統(tǒng),其特征在于,還包括動態(tài)添加模塊,用于通過向所述路由表中添加后端服務器的配置信息,動態(tài)添加可分配的后端服務器。
16.根據權利要求11至13任一所述的系統(tǒng),其特征在于,還包括第一訪問控制模塊,用于預先配置后端服務器的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、 和/或最大內存使用信息、和/或最大CPU使用信息;在每個獲取周期內,依據獲取的當前負載信息和所配置的最大處理能力,檢測后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。
17.根據權利要求11至13任一所述的系統(tǒng),其特征在于,還包括第二訪問控制模塊,用于每個后端服務器上預先配置相應的最大處理能力,所述最大處理能力表示為最大在線人數、和/或應用程序的最大下載個數、和/或應用程序的最大下載數據量、和/或最大內存使用信息、和/或最大CPU使用信息;每個后端服務器依據當前負載信息和所配置的最大處理能力,定時檢測是否滿載;定時獲取后端服務器是否滿載,并對滿載的后端服務器進行訪問控制。
18.根據權利要求11至13任一所述的系統(tǒng),其特征在于,還包括通信配置模塊,用于根據后端服務的類型,選擇配置相適應的與后端服務器通信的交互協議;如果后端服務的類型調整,則重新配置相適應的與后端服務器通信的交互協議。
全文摘要
本申請?zhí)峁┝艘环N應用服務的負載均衡方法及系統(tǒng),以解決目前網絡服務中的負載均衡問題。所述方法包括不斷獲取后端服務器的當前負載信息,所述當前負載信息包括后端服務器的應用程序運行數據,或者包括后端服務器的應用程序運行數據和性能數據;在每個獲取周期內,依據所述當前負載信息重新計算后端服務器的權重;依據每次計算的權重調整后端服務器的分配,并選擇后端服務器將客戶端的接入請求進行路由。與傳統(tǒng)的應用服務的負載均衡方法相比,本申請能夠在完成同樣功能的多個網絡設備之間實現業(yè)務量的合理分配,而不至于出現一臺設備過忙,其他設備未能充分發(fā)揮其作用的情況。
文檔編號H04L29/08GK102611735SQ20111043309
公開日2012年7月25日 申請日期2011年12月21日 優(yōu)先權日2011年12月21日
發(fā)明者李強, 黃蔚 申請人:奇智軟件(北京)有限公司