專利名稱::一種網(wǎng)絡(luò)流量快速分配方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種網(wǎng)絡(luò)流量分配方法,特別是關(guān)于一種基于URL(網(wǎng)絡(luò)通用資源地址)的網(wǎng)絡(luò)流量快速分配方法。技術(shù)背景網(wǎng)絡(luò)流量分配方法,也稱為負載均衡策略,是流量管理中把客戶的數(shù)據(jù)流量平均分流到多個后臺服務(wù)器上的技術(shù)方法,此方法有助于充分利用所有后臺服務(wù)器的功能。通常的負載均衡方法有三種1、輪循均衡,即按順序循環(huán)的方法將每一次來自客戶的請求依次分配給集群服務(wù)器中的具體服務(wù)器。2、最小連接數(shù)均衡,即傳遞新的客戶請求給那些進行最少連接處理的服務(wù)器,在SLB(服務(wù)負載平衡)軟件系統(tǒng)中,集群服務(wù)器中的每一臺服務(wù)器都有一個記述器,記錄當(dāng)前該服務(wù)器正在處理的進程數(shù)量,當(dāng)有新的客戶請求時,SLB總是將請求分配給當(dāng)前進程數(shù)最少的服務(wù)器。3、處理能力均衡,即給所有服務(wù)器分組,給每個組定義優(yōu)先權(quán),將客戶請求分配給優(yōu)先級最高的服務(wù)器組,在系統(tǒng)Setup時,要求用戶先給出每一臺服務(wù)器的配置情況,這里主要是影響服務(wù)器處理能力的CPU型號、CPU數(shù)量和內(nèi)存數(shù)量,然后系統(tǒng)將其換算成處理能力單位,SLB根據(jù)每一臺服務(wù)器的能力,均衡地將任務(wù)分配給性能最高的服務(wù)器。在Web應(yīng)用中,數(shù)據(jù)量巨大,為了兼顧容量和速度,常常將高速服務(wù)器(小容量)和低速服務(wù)器(大容量)配合使用。高速服務(wù)器只保存最近最常用的內(nèi)容,性能較高。低速服務(wù)器保存所有內(nèi)容,但響應(yīng)速度慢。客戶的數(shù)據(jù)流量一般先由高速服務(wù)器處理,但當(dāng)出現(xiàn)如下情況時,低速服務(wù)器將會被使用1、高速服務(wù)器不可用。2、在高速服務(wù)器上找不到相應(yīng)數(shù)據(jù),此時,高速服務(wù)器會先到低速服務(wù)器上取回相應(yīng)數(shù)據(jù),然后對客戶請求做出響應(yīng)。通常的負載均衡方法在解決如上Web數(shù)據(jù)流量分配時,存在如下一些不足之處1、上述三種負載均衡策略都可能將同樣內(nèi)容的訪問分配到不同的高速服務(wù)器上,結(jié)果就導(dǎo)致所有高速服務(wù)器上存儲大量重復(fù)數(shù)據(jù),大大降低了高速服務(wù)器的存儲總?cè)萘?,從而?dǎo)致服務(wù)性能下降。例如每臺高速服務(wù)器有100G的容量,五臺高速服務(wù)器總共的容量本來應(yīng)該有500G。但是由于冗余數(shù)據(jù)的存在,它們所包含的不同數(shù)據(jù)將會遠小于500G。最壞的情況(即所有數(shù)據(jù)都相同),五臺服務(wù)器加起來只有100G不同數(shù)據(jù)!除此之外的內(nèi)容都在后備的低速服務(wù)器上,需要由高速服務(wù)器臨時從低速服務(wù)器上讀取。這樣一方面嚴重影響了服務(wù)速度,同時也沒有能夠充分利用多臺高速服務(wù)器的容量。2、當(dāng)一個高速服務(wù)器出現(xiàn)短暫故障后,上述負載均衡策略會將原來到其上的流量轉(zhuǎn)到其它高速服務(wù)器或者后備服務(wù)器上,但當(dāng)這個高速服務(wù)器恢復(fù)之后,這些流量并不一定能再次分配回來。這樣一方面數(shù)據(jù)流量的持續(xù)和可恢復(fù)性就得不到保證,另一方面恢復(fù)后的高速服務(wù)器將很難正常參與到數(shù)據(jù)處理中來,從而降低了它的使用率。3、輪循均衡策略適合于平均Web訪問時間相對均衡的情況。但由于每一次訪問在Web停留的時間差異有可能是非常大的,因此,隨著工作時間加長,每一臺服務(wù)器上的進程可能會產(chǎn)生極大的差異,簡單的輪循不能保證真正意義上的均衡。
發(fā)明內(nèi)容針對上述問題,本發(fā)明的目的是提供一種基于URL的網(wǎng)絡(luò)流量快速分配方法,使得網(wǎng)絡(luò)流量能夠均勻分配到多臺服務(wù)器上,并且解決以往負載均衡策略中服務(wù)器的數(shù)據(jù)存儲冗余和丟失數(shù)據(jù)不可恢復(fù)的弊病。為實現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案一種網(wǎng)絡(luò)流量快速分配方法,其包括以下步驟l)定義若干個高速服務(wù)器組,并將各個高速服務(wù)器組以名稱排序或指定次序填入散列表;2)定義一個或一個以上后備服務(wù)器組;3)收到客戶請求時,從中提取出URL;4)使用散列算法,根據(jù)URL,計算出關(guān)鍵值;5)用散列表有效項個數(shù)對key值取模,然后根據(jù)得到的模數(shù)從散列表中找到對應(yīng)的服務(wù)器組;6)將客戶請求分配到找到的服務(wù)器組中。在執(zhí)行步驟5)時,利用如下取模公式key%n=m,其中n為散列表有效項個數(shù),m是服務(wù)器的編號。在執(zhí)行步驟4)時,定期對各個高速服務(wù)器組進行健康檢查,健康檢查是負載均衡設(shè)備將自身模擬為一虛擬客戶,間斷向各個高速服務(wù)器組發(fā)送請求,檢査各個高速服務(wù)器組狀態(tài)。當(dāng)健康檢查顯示其中一個高速服務(wù)器組已經(jīng)失效,則將客戶請求分配到后備服務(wù)器組。當(dāng)健康檢査顯示所述高速服務(wù)器組已經(jīng)恢復(fù)正常,則客戶請求重新分配到所述高速服務(wù)器組。由于采用了以上技術(shù)方案,本發(fā)明具有了下列優(yōu)點1、本發(fā)明在負載均衡中利用智能散列算法的特性,將概率上大致相同多的請求或任務(wù)量分配給每一臺服務(wù)器,因此保證了網(wǎng)絡(luò)流量的均勻分配。2、本發(fā)明通過智能散列函數(shù)的使用,相4較于其它字符串處理方式,具有快速高效査找的特點。3、本發(fā)明可以最大化利用服務(wù)器容量,使每個服務(wù)器組為不同的訪問內(nèi)容服務(wù),各個服務(wù)器組中的服務(wù)器將會存儲完全不同的內(nèi)容,使得能夠提供的內(nèi)容總量為各服務(wù)器組容量之和,從而最充分的利用了機器的數(shù)據(jù)空間。4、本發(fā)明由于利用智能散列函數(shù)每次對同一URL求出的關(guān)鍵值(key)都相同的特性,因此很好地保證了相同URL的數(shù)據(jù)流量永遠會被分配到同一個組里的同一臺服務(wù)器上,保障了服務(wù)的保持性。5、本發(fā)明與后備服務(wù)器組相配合,當(dāng)某服務(wù)器組不可用時由后備服務(wù)器組提供服務(wù);當(dāng)此服務(wù)器組恢復(fù)正常后,原有的流量又會返回,從而保證了服務(wù)器組的可恢復(fù)性,使得短暫故障的服務(wù)器恢復(fù)后馬上被派上用場。圖1是本發(fā)明的一個典型應(yīng)用環(huán)境實例示意圖具體實施方式本發(fā)明的基本思路為1、把所有高速服務(wù)器和低速服務(wù)器根據(jù)需要分成若干個服務(wù)器組,每個服務(wù)器組可以根據(jù)需要包含一個或多個相同性能的服務(wù)器,這些服務(wù)器組中包含一個后備服務(wù)器組。2、使用已有技術(shù)中的智能散列函數(shù)根據(jù)客戶訪問的URL計算出唯一的key值。3、采用某種方法(在實施例里將會做詳細說明)將key值與已經(jīng)編號的服務(wù)器組對應(yīng)起來,從而達到將含有具體URL的數(shù)據(jù)請求發(fā)送到相應(yīng)服務(wù)器上的目的。4、采用網(wǎng)絡(luò)技術(shù)對每個服務(wù)器組中的每臺服務(wù)器定期做健康檢查,從而實時地掌握服務(wù)器工作狀態(tài)的信息。5、當(dāng)某臺服務(wù)器經(jīng)過健康檢査被認為不可用時,后備服務(wù)器組中的服務(wù)器將會被調(diào)用,從而保證客戶請求在任何時候都可以被響應(yīng)。本發(fā)明對于URL的內(nèi)容、格式等沒有任何限制和要求。下面結(jié)合附圖和實施例,對本發(fā)明進行詳細的描述?;谏鲜龅幕舅悸?,本發(fā)明包括以下步驟1)如圖1所示,定義若干個高速服務(wù)器組和后備服務(wù)器組①定義若干個高速服務(wù)器組本實施例一共定義三個高速服務(wù)器組——第1組、第2組、第3組,每組中可以包括若干個高速服務(wù)器,并將服務(wù)器組填入散列表,以服務(wù)器組名稱排序,本實施例中散列表的有效項個數(shù)為3,內(nèi)容為<table>tableseeoriginaldocumentpage5</column></row><table>②定義一個后備服務(wù)器組后備服務(wù)器組也可以包括若干個服務(wù)器。2)收到客戶請求,根據(jù)URL散列快速選擇服務(wù)器組①收到客戶HTTP請求,從中提取出URL字符串。一個HTTP請求都是由明文字符組成的,它分成兩大部份前面是表頭,后面是數(shù)據(jù),在表頭里,有一行關(guān)鍵字符串就是URL(此為本領(lǐng)域的技術(shù)人員所公知)。例如一個客戶HTTP請求的字符串為GET/about/xrld.htmHTTP/1.0Accept:image/gif.image/jpeg,*/氺Accept—Language:zh—cn則它的URL字符串為/about/xrld.htm。②根據(jù)提取到的URL,使用智能散列算法,計算出key值。例如hash(URL)二key注意對于同樣的URL,得到的key值永遠是一樣的。因此它能夠?qū)⒏怕噬洗笾孪嗤嗟恼埱蠡蛉蝿?wù)量分配給每一臺服務(wù)器,從而保證了網(wǎng)絡(luò)流量的均勻分配。③用散列表有效項個數(shù)對key值取模,然后根據(jù)得到的模數(shù)從散列表中找到對應(yīng)的服務(wù)器組,取模公式為key%n=m其中n為散列表有效項個數(shù),m是服務(wù)器的編號。例如1、散歹U函數(shù)hash("/about/xrld.htm,,)=101。2、本實施例定義了三個服務(wù)器組,散列表有效項個數(shù)為3,這三個服務(wù)器組的編號為0,1,2。取模操作為101%3二2,所以該客戶請求會被發(fā)送給編號為2的服務(wù)器組,此處散列表中第2項的內(nèi)容為第3組,則第3組為對應(yīng)服務(wù)器組。④本發(fā)明服務(wù)器組的健康檢查是負載均衡設(shè)備將自身模擬為一虛擬客戶,間斷向高速服務(wù)器組發(fā)送請求,檢査高速服務(wù)器組狀態(tài),并選擇最終使用的服務(wù)器組。如果服務(wù)器組生效,則使用此服務(wù)器組;如果該服務(wù)器組已經(jīng)失效,則使用后備服務(wù)器組。當(dāng)此服務(wù)器組恢復(fù)正常后,原有的流量又會返回,這是因為根據(jù)智能散列算法求出的key值將會被優(yōu)先使用決定服務(wù)器組,從而保證了服務(wù)器組的可恢復(fù)性,使得短暫故障的服務(wù)器恢復(fù)后馬上被派上用場。例如1、當(dāng)?shù)趌組服務(wù)器有效時,客戶請求被分配到第1組服務(wù)器。2、當(dāng)?shù)?組服務(wù)器變?yōu)槭Ш?,同樣URL的客戶請求會被分配到后備服務(wù)器組。3、當(dāng)?shù)趌組服務(wù)器再次生效后,同樣URL的客戶請求會被重新分配到第1組服務(wù)器。上述實施例僅為本發(fā)明的一個較佳實施例,在本發(fā)明的實質(zhì)創(chuàng)意范圍內(nèi),本發(fā)明采用的算法可以有許多變化或替換,這些算法的變化或替換都不應(yīng)排除在本發(fā)明的保護范圍之外。權(quán)利要求1、一種網(wǎng)絡(luò)流量快速分配方法,其包括以下步驟1)定義若干個高速服務(wù)器組,并將各個高速服務(wù)器組以名稱排序或指定次序填入散列表;2)定義一個或一個以上后備服務(wù)器組;3)收到客戶請求時,從中提取出URL;4)使用散列算法,根據(jù)URL,計算出關(guān)鍵值;5)用散列表有效項個數(shù)對key值取模,然后根據(jù)得到的模數(shù)從散列表中找到對應(yīng)的服務(wù)器組;6)將客戶請求分配到找到的服務(wù)器組中。2、如權(quán)利要求l所述一種網(wǎng)絡(luò)流量快速分配方法,其特征在于在執(zhí)行步驟5)時,利用如下取模公式key%n=m,其中n為散列表有效項個數(shù),ra是服務(wù)器的編號。3、如權(quán)利要求l所述一種網(wǎng)絡(luò)流量快速分配方法,其特征在于在執(zhí)行步驟4)時,定期對各個高速服務(wù)器組進行健康檢查,健康檢査是負載均衡設(shè)備將自身模擬為一虛擬客戶,間斷向各個高速服務(wù)器組發(fā)送請求,檢査各個高速服務(wù)器組狀態(tài)。4、如權(quán)利要求3所述一種網(wǎng)絡(luò)流量快速分配方法,其特征在于當(dāng)健康檢査顯示其中一個高速服務(wù)器組已經(jīng)失效,則將客戶請求分配到后備服務(wù)器組。5、如權(quán)利要求3所述一種網(wǎng)絡(luò)流量快速分配方法,其特征在于當(dāng)健康檢査顯示所述高速服務(wù)器組已經(jīng)恢復(fù)正常,則客戶請求重新分配到所述高速服務(wù)器組。全文摘要本發(fā)明涉及一種網(wǎng)絡(luò)流量快速分配方法,其包括以下步驟1)定義若干個高速服務(wù)器組,并將各個所述高速服務(wù)器組以名稱排序或指定次序填入散列表;2)定義一個或一個以上后備服務(wù)器組;3)收到客戶請求時,從中提取出URL;4)使用散列算法,根據(jù)URL,計算出關(guān)鍵值;5)用散列表有效項個數(shù)對key值取模,然后根據(jù)得到的模數(shù)從散列表中找到對應(yīng)的服務(wù)器組;6)將客戶請求分配到找到的服務(wù)器組中。在進行以上步驟時并定期對高速服務(wù)器組進行健康檢查,如果服務(wù)器組生效,則使用此服務(wù)器組;如果服務(wù)器組已經(jīng)失效,則使用后備服務(wù)器組。本發(fā)明使得網(wǎng)絡(luò)流量能夠均勻分配到多臺服務(wù)器上,并且解決以往負載均衡策略中服務(wù)器的數(shù)據(jù)存儲冗余和丟失數(shù)據(jù)不可恢復(fù)的弊病。文檔編號H04L12/56GK101247349SQ20081010186公開日2008年8月20日申請日期2008年3月13日優(yōu)先權(quán)日2008年3月13日發(fā)明者張雯宇,波李,貝少峰,邱志金申請人:華耀環(huán)宇科技(北京)有限公司