本發(fā)明屬于負(fù)載均衡技術(shù)領(lǐng)域,涉及負(fù)載均衡方法、負(fù)載均衡器及負(fù)載均衡系統(tǒng)。
背景技術(shù):
負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,廉價(jià)有效透明地?cái)U(kuò)展了網(wǎng)絡(luò)設(shè)備、服務(wù)器的帶寬,增加了吞吐量,加強(qiáng)了網(wǎng)絡(luò)數(shù)據(jù)處理能力,以及提高了網(wǎng)絡(luò)的靈活性和可用性。負(fù)載均衡,是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如web服務(wù)器、ftp服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。
目前,主要有以下幾種負(fù)載均衡方法:(一)靜態(tài)負(fù)載均衡算法是按照固定規(guī)則將請(qǐng)求分配給服務(wù)器;例如按照輪詢算法將第i次請(qǐng)求分配給第imodn臺(tái)服務(wù)器。(二)動(dòng)態(tài)負(fù)載均衡算法是把請(qǐng)求分配給當(dāng)前負(fù)載最低的服務(wù)器;服務(wù)器的負(fù)載程度基于活躍連接數(shù),響應(yīng)時(shí)間等。(三)源地址哈希法是客戶端ip地址通過(guò)哈希函數(shù)計(jì)算得到一個(gè)數(shù)值,該數(shù)值對(duì)服務(wù)器列表的大小進(jìn)行取模運(yùn)算,得到客戶端要訪問(wèn)服務(wù)器。同一個(gè)客戶端每次都會(huì)映射到同一臺(tái)后端服務(wù)器進(jìn)行訪問(wèn)。
然而,靜態(tài)負(fù)載均衡算法和源地址哈希法只能將請(qǐng)求分配給已設(shè)置好的服務(wù)器,不能考慮服務(wù)器的當(dāng)前狀態(tài),容易導(dǎo)致服務(wù)器負(fù)載不均衡。其動(dòng)態(tài)負(fù)載均衡算法容易導(dǎo)致頻繁切換服務(wù)器。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供的技術(shù)方案如下:
本發(fā)明提供一種負(fù)載均衡方法,包括以下步驟:s20、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器;s30、判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;s40、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器;s50、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值;s60、所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器。
進(jìn)一步,還包括以下步驟:s70、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器。
進(jìn)一步,所述步驟s20之前還包括:s01、根據(jù)所述客戶端ip的散列值以及服務(wù)器的對(duì)應(yīng)關(guān)系,預(yù)先生成散列值-服務(wù)器對(duì)照表;s02、預(yù)先生成含有每個(gè)服務(wù)器狀態(tài)的服務(wù)器狀態(tài)表,所述服務(wù)器狀態(tài)包括所述服務(wù)器的資源占用率、異常連接次數(shù)、數(shù)據(jù)更新時(shí)間及負(fù)載參考值。
進(jìn)一步,所述步驟s20之前還包括:s10、按照預(yù)設(shè)更新時(shí)間接收所述服務(wù)器發(fā)送的資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率;s11、在所述服務(wù)器狀態(tài)表中更新所述服務(wù)器的狀態(tài),以及更新所述服務(wù)器狀態(tài)表的數(shù)據(jù)更新時(shí)間。
進(jìn)一步,所述步驟s20之前還包括:s12、根據(jù)所述服務(wù)器的資源占用率、數(shù)據(jù)更新時(shí)間、異常連接次數(shù),按照預(yù)設(shè)計(jì)算時(shí)間計(jì)算出所述服務(wù)器的負(fù)載參考值。
進(jìn)一步,所述步驟s20進(jìn)一步包括:s21、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,獲取所述客戶端的客戶端ip;s22、利用散列算法計(jì)算出所述客戶端ip對(duì)應(yīng)的散列值;s23、根據(jù)散列值-服務(wù)器對(duì)照表,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
本發(fā)明還提供一種負(fù)載均衡器,包括:查找模塊,用于根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器;判斷模塊,用于判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;分配控制模塊,用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器;所述判斷模塊,還用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值;所述分配控制模塊,還用于所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器。
進(jìn)一步,還包括修改模塊:當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則所述分配控制模塊用于將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且所述修改模塊用于修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器。
進(jìn)一步,還包括:生成模塊,用于根據(jù)所述客戶端ip的散列值以及服務(wù)器的對(duì)應(yīng)關(guān)系,預(yù)先生成散列值-服務(wù)器對(duì)照表;所述生成模塊,還用于預(yù)先生成含有每個(gè)服務(wù)器狀態(tài)的服務(wù)器狀態(tài)表,所述服務(wù)器狀態(tài)包括所述服務(wù)器的資源占用率、異常連接次數(shù)、數(shù)據(jù)更新時(shí)間及負(fù)載參考值。
本發(fā)明還提供一種負(fù)載均衡系統(tǒng),包括負(fù)載均衡器,還包括服務(wù)器:所述服務(wù)器,用于發(fā)送資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率。
與現(xiàn)有技術(shù)相比,本發(fā)明提供的一種負(fù)載均衡方法、負(fù)載均衡器及負(fù)載均衡系統(tǒng),具有以下有益效果:
1)本發(fā)明中每個(gè)客戶端對(duì)應(yīng)一個(gè)目標(biāo)服務(wù)器,在客戶端發(fā)送連接請(qǐng)求信息時(shí),分析目標(biāo)服務(wù)器的負(fù)載情況;當(dāng)目標(biāo)服務(wù)器的負(fù)載太多時(shí),將連接請(qǐng)求信息分配給備選服務(wù)器;當(dāng)目標(biāo)服務(wù)器的負(fù)載不多時(shí),將連接請(qǐng)求信息分配給目標(biāo)服務(wù)器。在基本保證一個(gè)ip總是能分配給同一臺(tái)服務(wù)器的前提下,使得服務(wù)器的負(fù)載更加均衡;并且不會(huì)頻繁切換服務(wù)器。
2)本發(fā)明中目標(biāo)服務(wù)器的負(fù)載過(guò)多時(shí),將連接請(qǐng)求信息分配給備選服務(wù)器,并將目標(biāo)服務(wù)器修改為備選服務(wù)器。再次發(fā)送連接請(qǐng)求信息時(shí),其目標(biāo)服務(wù)器為備選服務(wù)器,充分利用各個(gè)服務(wù)器,使得服務(wù)器的負(fù)載更加均衡。
附圖說(shuō)明
下面將以明確易懂的方式,結(jié)合附圖說(shuō)明優(yōu)選實(shí)施方式,對(duì)一種負(fù)載均衡方法、負(fù)載均衡器及負(fù)載均衡系統(tǒng)的上述特性、技術(shù)特征、優(yōu)點(diǎn)及其實(shí)現(xiàn)方式予以進(jìn)一步說(shuō)明。
圖1是本發(fā)明一種負(fù)載均衡方法的流程示意圖;
圖2是本發(fā)明另一種負(fù)載均衡方法的流程示意圖;
圖3是本發(fā)明中步驟s20的流程示意圖;
圖4是本發(fā)明又一種負(fù)載均衡方法的流程示意圖;
圖5是本發(fā)明一種負(fù)載均衡器的組成結(jié)構(gòu)示意圖;
圖6是本發(fā)明另一種負(fù)載均衡方法的流程示意圖。
附圖標(biāo)號(hào)說(shuō)明:
11、生成模塊,12、接收模塊,13、更新模塊,14、計(jì)算模塊,15、獲取模塊,16、查找模塊,17、判斷模塊,18、分配控制模塊。
具體實(shí)施方式
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)照附圖說(shuō)明本發(fā)明的具體實(shí)施方式。顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實(shí)施方式。
為使圖面簡(jiǎn)潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實(shí)際結(jié)構(gòu)。另外,以使圖面簡(jiǎn)潔便于理解,在有些圖中具有相同結(jié)構(gòu)或功能的部件,僅示意性地繪示了其中的一個(gè),或僅標(biāo)出了其中的一個(gè)。在本文中,“一個(gè)”不僅表示“僅此一個(gè)”,也可以表示“多于一個(gè)”的情形。
如圖1所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種負(fù)載均衡方法,包括以下步驟:s20、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器;
s30、判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;
s40、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器;
s50、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值;
s60、所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給當(dāng)前服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器。
具體的,預(yù)先設(shè)置每個(gè)客戶端對(duì)應(yīng)一個(gè)目標(biāo)服務(wù)器,當(dāng)客戶端a發(fā)送連接請(qǐng)求信息時(shí),查找出客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器a。判斷目標(biāo)服務(wù)器a的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;負(fù)載參考值越大,目標(biāo)服務(wù)器a當(dāng)前負(fù)載越多;負(fù)載參考值越小,目標(biāo)服務(wù)器a當(dāng)前負(fù)載越少。當(dāng)目標(biāo)服務(wù)器a的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),直接將連接請(qǐng)求信息分配給目標(biāo)服務(wù)器a。當(dāng)目標(biāo)服務(wù)器a的負(fù)載參考值大于等于第一預(yù)設(shè)閾值、且小于第二預(yù)設(shè)閾值時(shí),將連接請(qǐng)求信息不分配給目標(biāo)服務(wù)器a,而是分配給服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器,例如服務(wù)器b。在客戶端下一次發(fā)送連接請(qǐng)求信息時(shí),重復(fù)前述步驟。
如圖2所示,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,一種負(fù)載均衡方法,包括以下步驟:s20、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器;
s30、判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;
s40、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器;
s50、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值;
s60、所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給當(dāng)前服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器。
s70、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器。
具體的,當(dāng)客戶端a發(fā)送連接請(qǐng)求信息時(shí),查找出客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器a。判斷目標(biāo)服務(wù)器a的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;負(fù)載參考值越大,目標(biāo)服務(wù)器a當(dāng)前負(fù)載越多;負(fù)載參考值越小,目標(biāo)服務(wù)器a當(dāng)前負(fù)載越少。當(dāng)目標(biāo)服務(wù)器a的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),直接將連接請(qǐng)求信息分配給目標(biāo)服務(wù)器a。當(dāng)目標(biāo)服務(wù)器a的負(fù)載參考值大于等于第一預(yù)設(shè)閾值、且小于第二預(yù)設(shè)閾值時(shí),將連接請(qǐng)求信息不分配給目標(biāo)服務(wù)器a,而是分配給服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器,例如服務(wù)器b。當(dāng)目標(biāo)服務(wù)器a的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),將連接請(qǐng)求信息不分配給目標(biāo)服務(wù)器a,而是分配給服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器,例如服務(wù)器b;并將客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器a修改服務(wù)器b。在客戶端下一次發(fā)送連接請(qǐng)求信息時(shí),查找出客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器b后,重復(fù)上述步驟,分析目標(biāo)服務(wù)器b的負(fù)載情況。
如圖3、圖4所示,根據(jù)本發(fā)明的再一個(gè)實(shí)施例,一種負(fù)載均衡方法,包括以下步驟:
s01、根據(jù)所述客戶端ip的散列值以及服務(wù)器的對(duì)應(yīng)關(guān)系,預(yù)先生成散列值-服務(wù)器對(duì)照表;所述散列值-服務(wù)器對(duì)照表包括設(shè)定長(zhǎng)度(長(zhǎng)度為10000)的數(shù)組,數(shù)組中第i個(gè)元素的值就是映射為i的客戶端ip對(duì)應(yīng)的目標(biāo)服務(wù)器;初始化時(shí),可以將散列值均攤到每個(gè)服務(wù)器上,也可以依據(jù)服務(wù)器性能分配散列值。
s02、預(yù)先生成含有每個(gè)服務(wù)器狀態(tài)的服務(wù)器狀態(tài)表,所述服務(wù)器狀態(tài)包括資源占用率、異常連接次數(shù)、數(shù)據(jù)更新時(shí)間及負(fù)載參考值。所述異常連接次數(shù)存儲(chǔ)在設(shè)定容量(例如容量為20)的異常連接數(shù)隊(duì)列中,異常連接數(shù)隊(duì)列僅保存最近20次更新的異常連接次數(shù)。當(dāng)異常連接數(shù)隊(duì)列存滿時(shí),放入新的異常連接次數(shù)時(shí),移出異常連接數(shù)隊(duì)列中最先存儲(chǔ)的異常連接次數(shù)。
s10、按照預(yù)設(shè)更新時(shí)間接收所述服務(wù)器發(fā)送的資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率;其中,資源占用率指cpu占用率、內(nèi)存占用率和寬帶占用率三者中在設(shè)定統(tǒng)計(jì)次數(shù)中平均值較高的兩者。
s11、在所述服務(wù)器狀態(tài)表中更新所述服務(wù)器的狀態(tài),以及更新所述服務(wù)器狀態(tài)表的數(shù)據(jù)更新時(shí)間。
優(yōu)選的,還包括:s12、根據(jù)所述服務(wù)器的資源占用率、數(shù)據(jù)更新時(shí)間、異常連接次數(shù),按照預(yù)設(shè)計(jì)算時(shí)間計(jì)算出所述服務(wù)器的負(fù)載參考值。
s20、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器;
優(yōu)選的,所述步驟s20進(jìn)一步包括:s21、根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,獲取所述客戶端的客戶端ip;
s22、利用散列算法計(jì)算出所述客戶端ip對(duì)應(yīng)的散列值;
s23、根據(jù)散列值-服務(wù)器對(duì)照表,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
s30、判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值;
s40、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器;
s50、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值;
s60、所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給當(dāng)前服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器。
s70、當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器,即修改所述客戶端ip對(duì)應(yīng)的散列值。
具體的,利用散列算法將每個(gè)客戶端ip映射為0~9999中的一個(gè)散列值并形成一個(gè)數(shù)組,數(shù)組中第i個(gè)元素就是散列值,第i個(gè)元素的值就是該散列值對(duì)應(yīng)的服務(wù)器。
根據(jù)資源占用率、數(shù)據(jù)更新時(shí)間、異常連接次數(shù),計(jì)算服務(wù)器的負(fù)載參考值。其中,資源占用率是指相鄰兩個(gè)數(shù)據(jù)更新時(shí)間之間,多次統(tǒng)計(jì)cpu占用率、內(nèi)存占用率和寬帶占用率,根據(jù)統(tǒng)計(jì)次數(shù)計(jì)算出cpu占用率、內(nèi)存占用率和寬帶占用率的平均值。三個(gè)cpu占用率、內(nèi)存占用率和寬帶占用率中平均值中較高的兩個(gè)作為資源占用率。其中,異常連接次數(shù)是指相鄰兩個(gè)數(shù)據(jù)更新時(shí)間之間,統(tǒng)計(jì)異常連接的次數(shù)。資源占用率越高,負(fù)載參考值越大;數(shù)據(jù)更新時(shí)間越新,負(fù)載參考值越大;異常連接次數(shù)越多,負(fù)載參考值越大。
如圖5所示,根據(jù)本發(fā)明的再一個(gè)實(shí)施例,一種負(fù)載均衡器,包括:生成模塊11,用于根據(jù)所述客戶端ip的散列值以及服務(wù)器的對(duì)應(yīng)關(guān)系,預(yù)先生成散列值-服務(wù)器對(duì)照表;所述散列值-服務(wù)器對(duì)照表包括設(shè)定長(zhǎng)度(長(zhǎng)度為10000)的數(shù)組,數(shù)組中第i個(gè)元素的值就是映射為i的客戶端ip對(duì)應(yīng)的目標(biāo)服務(wù)器;初始化時(shí),可以將散列值均攤到每個(gè)服務(wù)器上,也可以依據(jù)服務(wù)器性能分配散列值。
所述生成模塊11,還用于預(yù)先生成含有每個(gè)服務(wù)器狀態(tài)的服務(wù)器狀態(tài)表,所述服務(wù)器狀態(tài)包括資源占用率、異常連接次數(shù)、數(shù)據(jù)更新時(shí)間及負(fù)載參考值。所述異常連接次數(shù)存儲(chǔ)在設(shè)定容量(例如容量為20)的異常連接數(shù)隊(duì)列中,異常連接數(shù)隊(duì)列僅保存最近20次更新的異常連接次數(shù)。當(dāng)異常連接數(shù)隊(duì)列存滿時(shí),放入新的異常連接次數(shù)時(shí),移出異常連接數(shù)隊(duì)列中最先存儲(chǔ)的異常連接次數(shù)。
接收模塊12,用于按照預(yù)設(shè)更新時(shí)間接收所述服務(wù)器發(fā)送的資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率;其中,資源占用率指cpu占用率、內(nèi)存占用率和寬帶占用率三者中在設(shè)定統(tǒng)計(jì)次數(shù)中平均值較高的兩者。
更新模塊13,用于在所述服務(wù)器狀態(tài)表中更新所述服務(wù)器的狀態(tài),以及更新所述服務(wù)器狀態(tài)表的數(shù)據(jù)更新時(shí)間。
優(yōu)選的,還包括:計(jì)算模塊14,用于根據(jù)所述服務(wù)器的資源占用率、數(shù)據(jù)更新時(shí)間、異常連接次數(shù),按照預(yù)設(shè)計(jì)算時(shí)間計(jì)算出所述服務(wù)器的負(fù)載參考值。
查找模塊16,用于根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
優(yōu)選的,獲取模塊15,用于根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,獲取所述客戶端的客戶端ip。
所述計(jì)算模塊14,還用于利用散列算法計(jì)算出所述客戶端ip對(duì)應(yīng)的散列值。
所述查找模塊16,還用于根據(jù)散列值-服務(wù)器對(duì)照表,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
判斷模塊17,用于判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值。
分配控制模塊18,用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器。
所述判斷模塊17,還用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值。
所述分配控制模塊18,還用于所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給當(dāng)前服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器。
所述分配控制模塊18,還用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器,即修改所述客戶端ip對(duì)應(yīng)的散列值。
根據(jù)本發(fā)明的再一個(gè)實(shí)施例,一種負(fù)載均衡系統(tǒng),包括負(fù)載均衡器和服務(wù)器:所述負(fù)載均衡器包括:生成模塊11,用于根據(jù)所述客戶端ip的散列值以及服務(wù)器的對(duì)應(yīng)關(guān)系,預(yù)先生成散列值-服務(wù)器對(duì)照表;所述散列值-服務(wù)器對(duì)照表包括設(shè)定長(zhǎng)度(長(zhǎng)度為10000)的數(shù)組,數(shù)組中第i個(gè)元素的值就是映射為i的客戶端ip對(duì)應(yīng)的目標(biāo)服務(wù)器;初始化時(shí),可以將散列值均攤到每個(gè)服務(wù)器上,也可以依據(jù)服務(wù)器性能分配散列值。
所述生成模塊11,還用于預(yù)先生成含有每個(gè)服務(wù)器狀態(tài)的服務(wù)器狀態(tài)表,所述服務(wù)器狀態(tài)包括資源占用率、異常連接次數(shù)、數(shù)據(jù)更新時(shí)間及負(fù)載參考值。所述異常連接次數(shù)存儲(chǔ)在設(shè)定容量(例如容量為20)的異常連接數(shù)隊(duì)列中,異常連接數(shù)隊(duì)列僅保存最近20次更新的異常連接次數(shù)。當(dāng)異常連接數(shù)隊(duì)列存滿時(shí),放入新的異常連接次數(shù)時(shí),移出異常連接數(shù)隊(duì)列中最先存儲(chǔ)的異常連接次數(shù)。
接收模塊12,用于按照預(yù)設(shè)更新時(shí)間接收所述服務(wù)器發(fā)送的資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率;其中,資源占用率指cpu占用率、內(nèi)存占用率和寬帶占用率三者中在設(shè)定統(tǒng)計(jì)次數(shù)中平均值較高的兩者。
更新模塊13,用于在所述服務(wù)器狀態(tài)表中更新所述服務(wù)器的狀態(tài),以及更新所述服務(wù)器狀態(tài)表的數(shù)據(jù)更新時(shí)間。
優(yōu)選的,還包括:計(jì)算模塊14,用于根據(jù)所述服務(wù)器的資源占用率、數(shù)據(jù)更新時(shí)間、異常連接次數(shù),按照預(yù)設(shè)計(jì)算時(shí)間計(jì)算出所述服務(wù)器的負(fù)載參考值。
查找模塊16,用于根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
優(yōu)選的,獲取模塊15,用于根據(jù)客戶端發(fā)送的連接請(qǐng)求信息,獲取所述客戶端的客戶端ip。
所述計(jì)算模塊14,還用于利用散列算法計(jì)算出所述客戶端ip對(duì)應(yīng)的散列值。
所述查找模塊16,還用于根據(jù)散列值-服務(wù)器對(duì)照表,查找出所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器。
判斷模塊17,用于判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第一預(yù)設(shè)閾值。
分配控制模塊18,用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值小于第一預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給所述目標(biāo)服務(wù)器。
所述判斷模塊17,還用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第一預(yù)設(shè)閾值時(shí),則進(jìn)一步判斷所述目標(biāo)服務(wù)器的負(fù)載參考值是否小于第二預(yù)設(shè)閾值。
所述分配控制模塊18,還用于所述目標(biāo)服務(wù)器的負(fù)載參考值小于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給當(dāng)前服務(wù)器狀態(tài)表中負(fù)載參考值最低的備選服務(wù)器。
所述分配控制模塊18,還用于當(dāng)所述目標(biāo)服務(wù)器的負(fù)載參考值大于等于第二預(yù)設(shè)閾值時(shí),則將所述客戶端的連接請(qǐng)求信息分配給服務(wù)器狀態(tài)表中當(dāng)前負(fù)載參考值最低的備選服務(wù)器,且修改所述客戶端對(duì)應(yīng)的目標(biāo)服務(wù)器為所述備選服務(wù)器,即修改所述客戶端ip對(duì)應(yīng)的散列值。
所述服務(wù)器用于發(fā)送資源占用率、異常連接次數(shù);所述資源占用率包括所述服務(wù)器的cpu占用率、內(nèi)存占用率和寬帶占用率;其中,資源占用率指cpu占用率、內(nèi)存占用率和寬帶占用率三者中在設(shè)定統(tǒng)計(jì)次數(shù)中平均值較高的兩者。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種負(fù)載均衡方法,包括以下步驟:負(fù)載均衡器按散列算法將客戶端ip映射為一個(gè)0–9999的散列值,并且維護(hù)一張散列值-服務(wù)器對(duì)照表:一個(gè)長(zhǎng)度為10000的數(shù)組,其第i個(gè)元素的值就是散列值i對(duì)應(yīng)的服務(wù)器號(hào)。初始化時(shí)可以將散列值均攤到所有服務(wù)器上,也可以依據(jù)服務(wù)器性能分配散列值。
負(fù)載均衡器維護(hù)一張服務(wù)器狀態(tài)表,其中包括服務(wù)器的資源占用率、異常連接數(shù)隊(duì)列(容量為20)、最新更新時(shí)間及服務(wù)器負(fù)載值。
在服務(wù)器上運(yùn)行一個(gè)低優(yōu)先級(jí)進(jìn)程,定時(shí)向均衡器發(fā)送服務(wù)器的資源占用率和從上一次發(fā)送結(jié)束到本次發(fā)送開(kāi)始產(chǎn)生的異常連接數(shù)數(shù)量。其中資源占用率為服務(wù)器的cpu占用率,內(nèi)存占用率和帶寬占用率這三個(gè)值中最高的兩個(gè)的平均值。
負(fù)載均衡器收到服務(wù)器發(fā)送的數(shù)據(jù)后更新服務(wù)器狀態(tài)表,直接把資源占用率更新為服務(wù)器給出的值;將最新更新時(shí)間設(shè)為均衡器當(dāng)前時(shí)間;將異常連接數(shù)push到異常連接數(shù)隊(duì)列中,若隊(duì)列已滿則自動(dòng)把隊(duì)列第一個(gè)元素pop。即服務(wù)器狀態(tài)表總是保留最近20次的異常連接數(shù)。
負(fù)載均衡器定時(shí)計(jì)算服務(wù)器的負(fù)載值,依據(jù)服務(wù)器的資源占用率,最新更新時(shí)間,異常連接數(shù)隊(duì)列得到服務(wù)器的負(fù)載值評(píng)分(0-99),分?jǐn)?shù)越高表明負(fù)荷越嚴(yán)重。
當(dāng)負(fù)載均衡器收到某個(gè)客戶端的請(qǐng)求時(shí),首先計(jì)算該客戶端ip的散列值,然后找出該散列值對(duì)應(yīng)的目標(biāo)服務(wù)器。當(dāng)目標(biāo)服務(wù)器的負(fù)載值低于第一閾值時(shí)均衡器選擇直接將請(qǐng)求分配給目標(biāo)服務(wù)器;當(dāng)目標(biāo)服務(wù)器的負(fù)載值高于第一閾值且低于第二閾值時(shí)均衡器選擇將請(qǐng)求分配給當(dāng)前負(fù)載最低的服務(wù)器;目標(biāo)服務(wù)器的負(fù)載值高于第二閾值時(shí)均衡器選擇將請(qǐng)求分配給當(dāng)前負(fù)載最低的服務(wù)器,并且將請(qǐng)求ip的散列值對(duì)應(yīng)的服務(wù)器修改為新的服務(wù)器。
具體的,負(fù)載均衡器依據(jù)規(guī)定的散列算法將客戶端ip地址映射為一個(gè)散列值,再找出該散列值對(duì)應(yīng)的目標(biāo)服務(wù)器號(hào)。負(fù)載均衡器根據(jù)目標(biāo)服務(wù)器號(hào)的負(fù)載值進(jìn)行ip分配;若負(fù)載值低于閾值則直接將ip分配給目標(biāo)服務(wù)器;否則將ip分配給當(dāng)前負(fù)載值最低的服務(wù)器,并且將該散列值對(duì)應(yīng)的目標(biāo)服務(wù)器修改為新服務(wù)器。
應(yīng)當(dāng)說(shuō)明的是,上述實(shí)施例均可根據(jù)需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。