專利名稱:一種服務(wù)器負(fù)載均衡方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多服務(wù)器的負(fù)載均衡技術(shù),具體涉及一種服務(wù)器負(fù)載均衡方法,更具體地,涉及一種基于服務(wù)器權(quán)值的服務(wù)器負(fù)載均衡方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,互聯(lián)網(wǎng)用戶急劇增加,互聯(lián)網(wǎng)的應(yīng)用范圍也日益擴(kuò)大。同時(shí)互聯(lián)網(wǎng)內(nèi)容提供商為滿足互聯(lián)網(wǎng)用戶對(duì)互聯(lián)網(wǎng)內(nèi)容和形式的更高層次的要求,利用各種技術(shù)和手段,尤其是多媒體技術(shù),使網(wǎng)絡(luò)內(nèi)容的視覺效果更易吸引用戶。用戶訪問(wèn)數(shù)量的增加以及用戶單次訪問(wèn)流量的增加對(duì)服務(wù)器承受并發(fā)訪問(wèn)的能力提出了更高的要求。由于單臺(tái)服務(wù)器的負(fù)載能力總是有限的,面對(duì)日益增加的用戶訪問(wèn)數(shù)量和訪問(wèn)流量,單臺(tái)服務(wù)器的中央處理器(CPU)和輸入/輸出(I/O)很快會(huì)成為瓶頸。而這個(gè)問(wèn)題不是單純靠提高服務(wù)器硬件的性能就可以解決的。通常的解決方案是采用由多臺(tái)服務(wù)器構(gòu)成的服務(wù)器組并對(duì)服務(wù)器組實(shí)施負(fù)載均衡技術(shù),從而有效的解決服務(wù)器的合理選擇和流量分擔(dān)問(wèn)題。目前的負(fù)載均衡技術(shù)中常見的對(duì)服務(wù)器的選擇方法有哈希法、加權(quán)最小連接數(shù)法、輪轉(zhuǎn)法、加權(quán)輪轉(zhuǎn)法等等。這些方法要么注重調(diào)度速率即選擇服務(wù)器的速率,如哈希法,要么注重調(diào)度的均衡程度卻忽略了速率,如加權(quán)輪轉(zhuǎn)法和加權(quán)最小連接法,缺少一種有效快速的調(diào)度方法。
加權(quán)輪轉(zhuǎn)法是目前具有代表性的基于權(quán)值均衡的負(fù)載均衡方法。圖1是加權(quán)輪轉(zhuǎn)法實(shí)現(xiàn)方式示意圖。其中,S代表服務(wù)器,S1代表第一臺(tái)服務(wù)器110,Sn代表第n臺(tái)服務(wù)器1n0,W代表各服務(wù)器的權(quán)值。在負(fù)載均衡過(guò)程中首先輪轉(zhuǎn)選擇服務(wù)器,如果被選擇的服務(wù)器的權(quán)值為0,則跳過(guò)該服務(wù)器并選擇下一臺(tái),如果被選擇的服務(wù)器的權(quán)值不為0,則選中該服務(wù)器作為被調(diào)度的服務(wù)器提供接入服務(wù)并將該服務(wù)器的權(quán)值減1,后繼的選擇在前次選擇的基礎(chǔ)上輪轉(zhuǎn),當(dāng)所有服務(wù)器的權(quán)值都減為0后,再將權(quán)值恢復(fù)成初始值。以權(quán)值分別為1、2、3的三臺(tái)服務(wù)器為例,第一次選擇第一臺(tái)服務(wù)器S1,其權(quán)值減為0,第二次選擇第二臺(tái)服務(wù)器S2,權(quán)值減為1,第三次選擇第三臺(tái)服務(wù)器S3,第四次輪轉(zhuǎn)到第一臺(tái)服務(wù)器S1,但是其權(quán)值為0,繼續(xù)輪轉(zhuǎn),選擇第一臺(tái)服務(wù)器S2,其權(quán)值不為0,所以第四次被調(diào)度的服務(wù)器是第二臺(tái)服務(wù)器S2,同時(shí)第二臺(tái)服務(wù)器S2的權(quán)值減為0,......。整個(gè)一輪的選擇次序依次是S1、S2、S3、S2、S3、S3。這樣,權(quán)值高的服務(wù)器獲得響應(yīng)的次數(shù)就同權(quán)值成正比,保證了對(duì)服務(wù)器選擇次數(shù)上按照權(quán)值分布。
但加權(quán)輪轉(zhuǎn)負(fù)載均衡方法在負(fù)載均衡過(guò)程中需要修改各服務(wù)器的加權(quán)值,而網(wǎng)絡(luò)數(shù)據(jù)在高速處理器中是以硬件多線程并行處理的,必須對(duì)公共變量(如服務(wù)器的權(quán)值等)進(jìn)行加鎖和解鎖處理,這就嚴(yán)重影響了網(wǎng)絡(luò)數(shù)據(jù)的處理速度。此外,加權(quán)輪轉(zhuǎn)負(fù)載均衡方法是基于輪轉(zhuǎn)的,如果當(dāng)前服務(wù)器的權(quán)值為0,就必須跳過(guò)該服務(wù)器,這就減少了直接命中的機(jī)會(huì),從而影響了網(wǎng)絡(luò)數(shù)據(jù)的處理速度。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)的上述缺點(diǎn),提供一種基于統(tǒng)計(jì)的負(fù)載均衡調(diào)度方法。利用本發(fā)明,不需要修改服務(wù)器的加權(quán)值等數(shù)據(jù),避免了對(duì)公共變量的加鎖解鎖處理問(wèn)題,同時(shí)避免了跳空輪轉(zhuǎn)現(xiàn)象。既保證了較快的負(fù)載均衡調(diào)度速度,從統(tǒng)計(jì)角度上也使得權(quán)值高的服務(wù)器提供較多的接入服務(wù)次數(shù),從而實(shí)現(xiàn)高性能的網(wǎng)絡(luò)轉(zhuǎn)發(fā)。
本發(fā)明提供了一種服務(wù)器負(fù)載均衡方法,包括以下步驟
預(yù)先確定服務(wù)器組中各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的分布區(qū)間的對(duì)應(yīng)關(guān)系;在新服務(wù)請(qǐng)求接入時(shí),根據(jù)第二預(yù)定規(guī)則確定所述的其中一個(gè)分布區(qū)間;根據(jù)所確定的所述的其中一個(gè)分布區(qū)間和所述的對(duì)應(yīng)關(guān)系確定提供本次被調(diào)度的服務(wù)器并將接入請(qǐng)求轉(zhuǎn)發(fā)給該服務(wù)器。
優(yōu)選地,所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括預(yù)先確定所述各服務(wù)器的加權(quán)值的步驟,以及根據(jù)所確定的加權(quán)值,為所述各服務(wù)器分配一個(gè)區(qū)間范圍與其權(quán)值成正比的分布區(qū)間的步驟;其中,所述的第一預(yù)定規(guī)則是指根據(jù)所確定的加權(quán)值,為所述各服務(wù)器分配的分布區(qū)間的區(qū)間范圍與其權(quán)值成正比的規(guī)則。
可選地,所述的根據(jù)第二預(yù)定規(guī)則確定分布區(qū)間的步驟包括生成一個(gè)位于由所有分布區(qū)間構(gòu)成的總區(qū)間范圍內(nèi)的隨機(jī)數(shù),確定所述隨機(jī)數(shù)所位于的其中一個(gè)分布區(qū)間的步驟;其中,所述的第二預(yù)定規(guī)則是指生成一個(gè)位于所述總區(qū)間范圍內(nèi)的隨機(jī)數(shù),確定所述隨機(jī)數(shù)所位于的其中一個(gè)分布區(qū)間的規(guī)則。
可選地,所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括確定所述各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的樹型分布區(qū)間的對(duì)應(yīng)關(guān)系的步驟,所述的確定被調(diào)度的服務(wù)器的步驟包括根據(jù)第二預(yù)定規(guī)則查找所述的樹型分布區(qū)間,確定被調(diào)度的服務(wù)器的步驟。
可選地,所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括確定所述各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的二叉樹型分布區(qū)間的對(duì)應(yīng)關(guān)系的步驟,所述的確定被調(diào)度的服務(wù)器的步驟包括根據(jù)第二預(yù)定規(guī)則查找所述的二叉樹型分布區(qū)間,確定被調(diào)度的服務(wù)器的步驟。
優(yōu)選地,所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括確定所述各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的二叉排序樹型分布區(qū)間的對(duì)應(yīng)關(guān)系的步驟,所述的確定被調(diào)度的服務(wù)器的步驟包括根據(jù)第二預(yù)定規(guī)則查找所述的二叉排序樹型分布區(qū)間,確定被調(diào)度的服務(wù)器的步驟。
優(yōu)選地,所述的方法包括預(yù)先確定所述服務(wù)器組中各服務(wù)器的加權(quán)值的步驟,所述的確定二叉排序樹型分布區(qū)間的對(duì)應(yīng)關(guān)系的步驟包括根據(jù)所述各服務(wù)器的加權(quán)值,在一個(gè)連續(xù)的數(shù)值區(qū)間順序?yàn)樗龈髋_(tái)服務(wù)器分配一個(gè)用該區(qū)間左邊界值表示的子區(qū)間,該子區(qū)間的右邊界用該子區(qū)間的下一子區(qū)間的左邊界表示,或者說(shuō),該子區(qū)間的右邊界等于該子區(qū)間的下一子區(qū)間的左邊界;將所述服務(wù)器按順序分成若干子群,其中構(gòu)成每個(gè)子群的服務(wù)器所對(duì)應(yīng)的子區(qū)間構(gòu)成一個(gè)連續(xù)的區(qū)間,該區(qū)間的左邊界值等于構(gòu)成該區(qū)間的所有子區(qū)間中的最小左邊界值,該區(qū)間的右邊界值等于下一個(gè)子群對(duì)應(yīng)區(qū)間的左邊界值;構(gòu)造一棵以所述子群對(duì)應(yīng)區(qū)間的左邊界值作為節(jié)點(diǎn)的二叉排序樹,該節(jié)點(diǎn)代表一個(gè)區(qū)間,該區(qū)間左邊界值為節(jié)點(diǎn)值,右邊界值為下一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)值。
優(yōu)選地,所述的構(gòu)造二叉排序樹的步驟包括構(gòu)造平衡二叉樹或者其左/右子樹為平衡二叉樹的二叉排序樹的步驟。
可選地,所述的確定其中一個(gè)分布區(qū)間的步驟包括生成一個(gè)位于由所有所述子區(qū)間構(gòu)成的總區(qū)間范圍內(nèi)的隨機(jī)數(shù);將所述的二叉排序樹作為當(dāng)前被查找的二叉排序樹;判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi),如果是,
在所述的當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)所對(duì)應(yīng)的子群中確定所述隨機(jī)數(shù)所位于的其中一個(gè)所述服務(wù)器對(duì)應(yīng)的子區(qū)間;根據(jù)所述的所述子區(qū)間與所述服務(wù)器的對(duì)應(yīng)關(guān)系,確定被調(diào)度的服務(wù)器;如果不是,判斷所述隨機(jī)數(shù)是否小于所述的當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)所對(duì)應(yīng)的區(qū)間的左邊界值,如果是,將所述的當(dāng)前被查找的二叉排序樹的左子樹作為當(dāng)前被查找的二叉排序樹;返回判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi)的步驟;如果不是,將所述的當(dāng)前被查找的二叉排序樹的右子樹作為當(dāng)前被查找的二叉排序樹;返回判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi)的步驟。
可選地,所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括確定所述各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的靜態(tài)的分布表的步驟。
由以上技術(shù)方案可以看出,本發(fā)明采用處理分離、區(qū)間查找的方法,在負(fù)載均衡調(diào)度時(shí)查詢靜態(tài)的分布區(qū)間表,而不對(duì)公共變量作修改操作,避免了多線程的鎖處理問(wèn)題,同時(shí)在選擇服務(wù)器時(shí)一次選定,避免了選擇跳空現(xiàn)象。采用二叉排序樹形式的靜態(tài)分布區(qū)間表,可加快負(fù)載調(diào)度時(shí)的查詢速度。為服務(wù)器分配與其權(quán)值成正比的分布區(qū)間范圍,保證了對(duì)服務(wù)器的加權(quán)覆蓋。采用隨機(jī)數(shù)機(jī)制分配訪問(wèn)服務(wù)器的連接,減小了對(duì)服務(wù)器的連續(xù)沖擊,在一定程度上更好的保護(hù)了服務(wù)器。從而在統(tǒng)計(jì)的角度上看,保證了服務(wù)器調(diào)度的獨(dú)特性和高效性。
圖1表示現(xiàn)有的基于權(quán)值均衡的加權(quán)輪轉(zhuǎn)法示意圖;圖2表示一個(gè)實(shí)現(xiàn)本發(fā)明的系統(tǒng)的功能分布圖;圖3表示本發(fā)明實(shí)施例的負(fù)載均衡調(diào)度流程圖;圖4表示本發(fā)明的實(shí)施例中服務(wù)器—權(quán)值—邊界關(guān)系圖;圖5表示在二叉排序樹中確定隨機(jī)數(shù)所在的子區(qū)間的流程框圖;圖6表示一種分布區(qū)間的二叉排序樹結(jié)構(gòu)圖;圖7表示另一種分布區(qū)間的二叉排序樹結(jié)構(gòu)圖;具體實(shí)施方式
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
圖2表示本實(shí)施例中功能的分布示意圖。用戶可以通過(guò)管理界面對(duì)主控板進(jìn)行功能設(shè)置,包括設(shè)置負(fù)載均衡策略和各服務(wù)器的加權(quán)值等,由主控板按照預(yù)定的規(guī)則生成服務(wù)器負(fù)載均衡時(shí)所用的分布區(qū)間查詢表項(xiàng),并將表示生成的分布區(qū)間和服務(wù)器的對(duì)應(yīng)關(guān)系的查詢表項(xiàng)直接配置到網(wǎng)絡(luò)數(shù)據(jù)處理接口板,在調(diào)度過(guò)程中接口板上的網(wǎng)絡(luò)處理器專心于區(qū)間查找與調(diào)度處理,從而實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備的快速轉(zhuǎn)發(fā)。
圖3是表示本發(fā)明實(shí)施例中負(fù)載均衡調(diào)度的流程圖。在步驟310,預(yù)先根據(jù)服務(wù)器的負(fù)載能力為每臺(tái)服務(wù)器選擇一個(gè)加權(quán)值,服務(wù)器的負(fù)載能力越大,為其選擇的加權(quán)值也越大。以一個(gè)負(fù)載均衡服務(wù)器組中有256個(gè)服務(wù)器為例,這些服務(wù)器分別以S1,S2,...,S256表示,所對(duì)應(yīng)的加權(quán)值分別是W1,W2,...,W256,為簡(jiǎn)單起見,假設(shè)加權(quán)值的數(shù)值依次為1,2,...,256。
在步驟320,為每臺(tái)服務(wù)器在0~65535之間分配一個(gè)不交疊的子區(qū)間,這些子區(qū)間構(gòu)成的總區(qū)間范圍為0~65535。為服務(wù)器分配子區(qū)間的步驟是首先將服務(wù)器按加權(quán)值由大到小的順序排列,同時(shí)求取上述所有加權(quán)值的總和,然后按照子區(qū)間的區(qū)間范圍與加權(quán)值成正比的原則根據(jù)每臺(tái)服務(wù)器的權(quán)值順序計(jì)算出每臺(tái)服務(wù)器的子區(qū)間。以3臺(tái)服務(wù)器為例,假設(shè)三臺(tái)服務(wù)器的權(quán)值分別為3、2、1,所有加權(quán)值的總和為3+2+1=6,這樣3個(gè)服務(wù)器的子區(qū)間依次為
為平衡二叉樹的二叉排序樹的步驟。
10.如權(quán)利要求7所述的服務(wù)器負(fù)載均衡方法,其特征在于所述的確定其中一個(gè)分布區(qū)間的步驟包括生成一個(gè)位于由所有所述子區(qū)間構(gòu)成的總區(qū)間范圍內(nèi)的隨機(jī)數(shù);將所述的二叉排序樹作為當(dāng)前被查找的二叉排序樹;判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi),如果是,在所述的當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)所對(duì)應(yīng)的子群中確定所述隨機(jī)數(shù)所位于的其中一個(gè)所述服務(wù)器對(duì)應(yīng)的子區(qū)間;根據(jù)所述的所述子區(qū)間與所述服務(wù)器的對(duì)應(yīng)關(guān)系,確定被調(diào)度的服務(wù)器;如果不是,判斷所述隨機(jī)數(shù)是否小于所述的當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)所對(duì)應(yīng)的區(qū)間的左邊界值,如果是,將所述的當(dāng)前被查找的二叉排序樹的左子樹作為當(dāng)前被查找的二叉排序樹;返回判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi)的步驟;如果不是,將所述的當(dāng)前被查找的二叉排序樹的右子樹作為當(dāng)前被查找的二叉排序樹;返回判斷所述隨機(jī)數(shù)是否位于所述當(dāng)前被查找的二叉排序樹的根節(jié)點(diǎn)的區(qū)間內(nèi)的步驟。
11.如權(quán)利要求1所述的服務(wù)器負(fù)載均衡方法,其特征在于所述的預(yù)先確定所述對(duì)應(yīng)關(guān)系的步驟包括確定所述各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的靜態(tài)的分布表的步驟。
全文摘要
本發(fā)明公開了一種服務(wù)器負(fù)載均衡方法,本方法基于服務(wù)器權(quán)值和概率統(tǒng)計(jì)原理實(shí)現(xiàn)負(fù)載均衡。本發(fā)明的技術(shù)方案如下預(yù)先確定服務(wù)器組中各臺(tái)服務(wù)器與符合第一預(yù)定規(guī)則的分布區(qū)間的對(duì)應(yīng)關(guān)系;在新服務(wù)請(qǐng)求接入時(shí),生成一個(gè)隨機(jī)數(shù)并確定隨機(jī)數(shù)所在的其中一個(gè)分布區(qū)間;根據(jù)所確定的其中一個(gè)分布區(qū)間和所述的對(duì)應(yīng)關(guān)系確定提供本次被調(diào)度的服務(wù)器并將接入請(qǐng)求轉(zhuǎn)發(fā)給該服務(wù)器。利用本發(fā)明,既可保證較快的負(fù)載均衡調(diào)度速度,從統(tǒng)計(jì)角度上也使得權(quán)值高的服務(wù)器提供較多的接入服務(wù)次數(shù),從而實(shí)現(xiàn)高性能的網(wǎng)絡(luò)轉(zhuǎn)發(fā)。
文檔編號(hào)G06F15/16GK1570903SQ03132980
公開日2005年1月26日 申請(qǐng)日期2003年7月23日 優(yōu)先權(quán)日2003年7月23日
發(fā)明者杜建樹 申請(qǐng)人:華為技術(shù)有限公司