專利名稱:一種負(fù)載均衡方法和負(fù)載均衡裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及負(fù)載均衡技術(shù),更具體地說,涉及一種負(fù)載均衡方法和負(fù)載均衡裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的進一步延伸,日常生活的網(wǎng)絡(luò)化趨勢日益明顯。為了提供更為強大 的處理能力,以便能夠更為及時的處理與日倶增的用戶訪問量和處理請求,必須設(shè)置一系 列提供相同服務(wù)內(nèi)容的服務(wù)器以組成服務(wù)器集群來響應(yīng)用戶的處理請求。在收到來自用戶 客戶端的處理請求后,需要進行負(fù)載均衡計算以決定將該請求具體發(fā)往哪一臺服務(wù)器進行 處理。鑒于各臺服務(wù)器之間存在個體性能差異,且不同時刻的繁忙程度各不相同,只有實現(xiàn) 真正的自適應(yīng)負(fù)載均衡服務(wù)調(diào)度機制,才能高效利用所有硬件資源,并能有效控制系統(tǒng)過 載的發(fā)生概率。 目前對負(fù)載均衡的研究主要集中在負(fù)載均衡策略和具體實現(xiàn)效果方面,現(xiàn)有最為 流行的負(fù)載均衡策略為輪循式負(fù)載均衡(Round Robin),即將來自用戶客戶端的請求輪流 分配給內(nèi)部的服務(wù)器,從1至N然后重新開始。輪循式負(fù)載均衡機制的優(yōu)點是易于實現(xiàn),然 而其缺點也十分明顯。這種負(fù)載均衡算法僅僅適合于服務(wù)器群中各服務(wù)器具有相同軟硬件 配置并且平均服務(wù)請求相對均衡的情況,在各臺服務(wù)器之間存在性能差異的情況下,這種 負(fù)載均衡機制便會顯現(xiàn)系統(tǒng)性能短板,造成處理異常。 因此,需要一種負(fù)載均衡解決方案,能夠有效克服現(xiàn)有輪循式負(fù)載均衡方式中存 在的上述缺陷。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有輪循式負(fù)載均衡機制在各臺服務(wù)器之間 存在性能差異的情況下會顯現(xiàn)系統(tǒng)性能短板由此造成處理異常的缺陷,提供一種負(fù)載均衡 方法和負(fù)載均衡裝置。 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
構(gòu)造一種負(fù)載均衡方法,包括
采集步驟,包括 定期采集每一服務(wù)器的處理請求隊列長度及處理能力值,將該處理能
力值添加到該服務(wù)器的處理能力歷史記錄中;
計算步驟,包括定期執(zhí)行如下操作 判斷是否存在處理請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,
若是,則 依據(jù)各服務(wù)器的處理請求隊列長度計算并更新每一服務(wù)器的性
能權(quán)重;
若否,則 依據(jù)每一服務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力
4
務(wù)器,若是,則 依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的 性能權(quán)重; 若否,則 對于每一服務(wù)器,以為該服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該 服務(wù)器的性能權(quán)重; 分發(fā)步驟,包括接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求的 服務(wù)器,并將該處理請求發(fā)往該服務(wù)器。 在本發(fā)明提供的負(fù)載均衡方法中,所述依據(jù)各服務(wù)器的處理請求隊列長度計算并 更新每一服務(wù)器的性能權(quán)重進一步包括,基于下列公式計算每一服務(wù)器的性能權(quán)重 Wn = (L,L2+, . . +Ln) /Ln 其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。 在本發(fā)明提供的負(fù)載均衡方法中,所述依據(jù)各服務(wù)器的最新處理能力值計算并更
新每一服務(wù)器的性能權(quán)重進一步包括,基于下列公式計算每一服務(wù)器的性能權(quán)重 WA = In/(V工2+, +In) 其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。 在本發(fā)明提供的負(fù)載均衡方法中,在所述采集步驟中,所述定期采集具體包括接
收每一服務(wù)器定期廣播的包含處理請求隊列長度及處理能力值的運行狀態(tài)消息。 在本發(fā)明提供的負(fù)載均衡方法中,對于每一服務(wù)器,所述采集步驟還包括 在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該服務(wù)器對應(yīng)的故障計時器的步
驟; 定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先設(shè)置的故障時長時 隔離該服務(wù)器的步驟。 本發(fā)明還提供了一種負(fù)載均衡裝置,與多臺服務(wù)器通信連接,包括 采集模塊,用于 定期采集每一服務(wù)器的處理請求隊列長度及處理能力值,將該處理能 力值添加到該服務(wù)器的處理能力歷史記錄中; 計算模塊,用于定期執(zhí)行如下操作 判斷是否存在處理請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器, 若是,則 依據(jù)各服務(wù)器的處理請求隊列長度計算并更新每一服務(wù)器的性 能權(quán)重; 若否,則 依據(jù)每一服務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力 波動率; 判斷是否存在處理能力波動率超過預(yù)先設(shè)置的波動率閾值的服 務(wù)器,若是,則
依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的 性能權(quán)重; 若否,則 對于每一服務(wù)器,以為該服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該 服務(wù)器的性能權(quán)重; 分發(fā)模塊,用于接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求的 服務(wù)器,并將該處理請求發(fā)往該服務(wù)器。 在本發(fā)明提供的負(fù)載均衡裝置中,在依據(jù)各服務(wù)器的處理請求隊列長度計算并更
新每一服務(wù)器的性能權(quán)重時,所述計算模塊基于下列公式計算每一服務(wù)器的性能權(quán)重
Wn = (L,L2+, . . +Ln) /Ln 其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。 在本發(fā)明提供的負(fù)載均衡裝置中,在依據(jù)各服務(wù)器的最新處理能力值計算并更新
每一服務(wù)器的性能權(quán)重時,所述計算模塊基于下列公式計算每一服務(wù)器的性能權(quán)重 WA = In/(V工2+, +In) 其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。 在本發(fā)明提供的負(fù)載均衡裝置中,所述采集模塊用于接收每一服務(wù)器定期廣播的
包含處理請求隊列長度及處理能力值的運行狀態(tài)消息。 在本發(fā)明提供的負(fù)載均衡裝置中,所述采集模塊中設(shè)有為每一服務(wù)器設(shè)置的故障 計時器,對于每一服務(wù)器,所述采集模塊還用于 在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該服務(wù)器對應(yīng)的故障計時器; 定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先設(shè)置的故障時長時
隔離該服務(wù)器。 實施本發(fā)明的技術(shù)方案,具有以下有益效果本發(fā)明提供的負(fù)載均衡方法和負(fù)載 均衡裝置通過定期調(diào)整每臺服務(wù)器的性能權(quán)重來動態(tài)調(diào)整整體負(fù)載均衡策略。具體來說, 本發(fā)明提供的負(fù)載均衡方案定期采集每臺服務(wù)器的處理請求隊列長度及處理能力值。基于 采集到的處理請求隊列長度及處理能力值,本發(fā)明提供的負(fù)載均衡方案定期計算并更新每 臺服務(wù)器的性能權(quán)重,具體包括,首先依據(jù)處理請求隊列長度判斷是否存在過載服務(wù)器,若 是,則基于處理請求隊列長度來計算并更新每一服務(wù)器的性能權(quán)重,若否,則計算每臺服務(wù) 器的處理能力波動率并據(jù)此判斷是否存在波動率過大的服務(wù)器,若是,則基于處理能力值 計算并更新每一服務(wù)器的性能權(quán)重,若否,則依據(jù)為每一服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新 該服務(wù)器的性能權(quán)重。這樣一來,當(dāng)存在過載服務(wù)器時,本發(fā)明基于各臺服務(wù)器的繁忙程度 進行負(fù)載均衡;當(dāng)不存在過載服務(wù)器時,若存在處理能力波動率過大的服務(wù)器,本發(fā)明基于 各臺服務(wù)器的處理能力進行負(fù)載均衡;除上述情況外,本發(fā)明基于為各臺服務(wù)器預(yù)先設(shè)置 的初始權(quán)重進行負(fù)載均衡。由于本發(fā)明提供的技術(shù)方案可根據(jù)不同情況采用不同的負(fù)載均 衡策略,所以處理請求的分配更加均衡,各臺服務(wù)器的利用率更高,對處理請求的處理速度 更快,更能滿足各方需要。
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中
圖1是依據(jù)本發(fā)明一較佳實施例的網(wǎng)絡(luò)環(huán)境的示意圖; 圖2是依據(jù)本發(fā)明一較佳實施例的負(fù)載均衡方法中計算步驟的流程圖; 圖3是依據(jù)本發(fā)明一較佳實施例的負(fù)載均衡裝置的邏輯結(jié)構(gòu)示意圖。
具體實施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。 本發(fā)明提供了一種負(fù)載均衡方法和負(fù)載均衡裝置,通過定期調(diào)整每臺服務(wù)器的性 能權(quán)重來動態(tài)調(diào)整整體負(fù)載均衡策略。具體來說,本發(fā)明提供的負(fù)載均衡方案定期采集每 臺服務(wù)器的處理請求隊列長度及處理能力值?;诓杉降奶幚碚埱箨犃虚L度及處理能力 值,本發(fā)明提供的負(fù)載均衡方案定期計算并更新每臺服務(wù)器的性能權(quán)重,具體包括,首先依 據(jù)處理請求隊列長度判斷是否存在過載服務(wù)器,若是,則基于處理請求隊列長度來計算并 更新每一服務(wù)器的性能權(quán)重,若否,則計算每臺服務(wù)器的處理能力波動率并據(jù)此判斷是否 存在波動率過大的服務(wù)器,若是,則基于處理能力值計算并更新每一服務(wù)器的性能權(quán)重,若 否,則依據(jù)為每一服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該服務(wù)器的性能權(quán)重。這樣一來,當(dāng)存在 過載服務(wù)器時,本發(fā)明基于各臺服務(wù)器的繁忙程度進行負(fù)載均衡;當(dāng)不存在過載服務(wù)器時, 若存在處理能力波動率過大的服務(wù)器,本發(fā)明基于各臺服務(wù)器的當(dāng)前實際處理能力進行負(fù) 載均衡;除上述情況外,本發(fā)明基于為各臺服務(wù)器預(yù)先設(shè)置的初始權(quán)重進行負(fù)載均衡。由于 本發(fā)明提供的技術(shù)方案可根據(jù)不同情況采用不同的負(fù)載均衡策略,所以處理請求的分配更 加均衡,各臺服務(wù)器的利用率更高,對處理請求的處理速度更快,更能滿足各方需要。下面 就結(jié)合附圖和具體實施例來詳細(xì)描述本發(fā)明提供的負(fù)載均衡方案。 圖1是依據(jù)本發(fā)明一較佳實施例的網(wǎng)絡(luò)環(huán)境100的示意圖。如圖1所示,其中展 示了客戶端102、負(fù)載均衡裝置104、服務(wù)器群106和互聯(lián)網(wǎng)108。 負(fù)載均衡裝置104需要具備性能較高的硬件配置,其一般可通過負(fù)載均衡服務(wù)器 來實現(xiàn)。負(fù)載均衡服務(wù)器104用于接收來自客戶端102的處理請求,依據(jù)服務(wù)器群106中各 臺服務(wù)器的性能權(quán)重來確定承擔(dān)此次處理請求的服務(wù)器,然后將該處理請求發(fā)往該服務(wù)器 進行處理。不同于現(xiàn)有的負(fù)載均衡方法,負(fù)載均衡服務(wù)器104可動態(tài)調(diào)整服務(wù)器群106中 每一服務(wù)器的性能權(quán)重,以實現(xiàn)動態(tài)調(diào)整負(fù)載均衡策略的目的。下面就結(jié)合圖2和圖3對 負(fù)載均衡服務(wù)器104對負(fù)載均衡策略的調(diào)整進行描述。 本發(fā)明提供了一種負(fù)載均衡方法,該負(fù)載均衡方法包括一采集步驟,包括負(fù)載均 衡裝置定期采集每一服務(wù)器的處理請求隊列長度和處理能力值,并將采集到的處理能力值 添加到該服務(wù)器的處理能力歷史記錄中。 —般情況下,服務(wù)器在收到處理請求后,會將該處理請求放入處理請求隊列,然后 依次處理收到的處理請求。因此,處理請求隊列的長度可反映出服務(wù)器的當(dāng)前繁忙程度。
在具體實現(xiàn)過程中,上述定期采集操作的具體實現(xiàn)方法為,服務(wù)器群中的每一服 務(wù)器定期廣播其運行狀態(tài)消息,其中包含該服務(wù)器的處理請求隊列長度和處理能力值。
在具體實現(xiàn)過程中,每臺服務(wù)器都啟動一個專門設(shè)置的收集進程,由此進程收集 系統(tǒng)當(dāng)前處理器占用情況和內(nèi)存使用情況等處理能力信息,計算處理能力值。此外,該收集進程還采集當(dāng)前處理請求隊列長度。在具體實現(xiàn)過程中,該收集進程以后臺deamon進程 (守護進程,即自動執(zhí)行周期性任務(wù)的進程)的方式運行,通過輪循的方式獲取當(dāng)前系統(tǒng)處 理器占用情況、內(nèi)存使用情況以及處理請求隊列長度等信息。 收集進程將收集到的處理請求隊列長度和處理能力值采用共享內(nèi)存進行保存,并 根據(jù)預(yù)先設(shè)置的廣播周期,通過廣播運行狀態(tài)消息的方式告知負(fù)載均衡裝置。負(fù)載均衡裝 置判斷收到消息的消息類型,如果發(fā)現(xiàn)是運行狀態(tài)消息,便解析并進行本地緩存。
對于每一服務(wù)器,采集步驟還包括在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該 服務(wù)器對應(yīng)的故障計時器;定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先 設(shè)置的故障時長時隔離該服務(wù)器。在具體實現(xiàn)過程中,故障時長可設(shè)置為運行狀態(tài)消息廣 播周期的倍數(shù),以避免因偶爾未收到運行狀態(tài)消息而輕易隔離服務(wù)器。在隔離服務(wù)器之后, 若重新接收到運行狀態(tài)消息,則解除對該服務(wù)器的隔離。 除上述采集步驟外,本發(fā)明提供的負(fù)載均衡方法還包括計算步驟,下面就結(jié)合圖2 對其進行詳細(xì)描述。 圖2是依據(jù)本發(fā)明一較佳實施例的負(fù)載均衡方法中計算步驟200的流程圖。如圖 2所示,該計算步驟200開始于步驟202。 隨后,在下一步驟204,負(fù)載均衡裝置讀取每臺服務(wù)器的處理請求隊列長度。
隨后,在下一步驟206,負(fù)載均衡裝置判斷是否存在過載服務(wù)器,即是否存在請求 隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,若是,則轉(zhuǎn)到步驟208,否則轉(zhuǎn)到步驟210。
如上文所述,若在步驟206判定存在過載服務(wù)器,則轉(zhuǎn)到步驟208,依據(jù)各服務(wù)器 的處理請求隊列長度計算并更新每一服務(wù)器的性能權(quán)重。隨后,計算步驟200轉(zhuǎn)到步驟 218。 在具體實現(xiàn)過程中,在依據(jù)各服務(wù)器的處理請求隊列長度計算每一服務(wù)器的性能 權(quán)重時,可基于下列公式計算每一服務(wù)器的性能權(quán)重
Wn = (L,L2+, . . +Ln) /Ln 其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。 不難理解,依據(jù)處理請求隊列長度確定的性能權(quán)重可反映服務(wù)器當(dāng)前的繁忙程度。 如上文所述,若在步驟206判定不存在過載服務(wù)器,則轉(zhuǎn)到步驟210,依據(jù)每一服
務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力波動率,然后轉(zhuǎn)到步驟212。 隨后,在下一步驟212,判斷是否存在處理能力波動率過大的服務(wù)器,即是否存在
處理能力值波動率超過預(yù)先設(shè)置的波動率閾值的服務(wù)器,若是,則轉(zhuǎn)到步驟214,否則轉(zhuǎn)到
步驟216。 如上文所述,若在步驟212判定存在處理能力波動率過大的服務(wù)器,則轉(zhuǎn)到步驟 214,依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的性能權(quán)重。在此之后,計算 步驟200轉(zhuǎn)到步驟218。該最新處理能力值即為處理能力歷史記錄中最新寫入的處理能力 值。 在具體實現(xiàn)過程中,在依據(jù)各服務(wù)器的最新處理能力值計算每一服務(wù)器的性能權(quán) 重時,可基于下列公式計算每一服務(wù)器的性能權(quán)重
WA = In/(V工2+,+In)
8
其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。 在具體實現(xiàn)過程中,處理能力值可根據(jù)例如但不限于最近5分鐘處理器空閑百分
比與各服務(wù)器的tmpc值的乘積來計算,其中,tmpc值在國內(nèi)外被廣泛用于衡量計算機系統(tǒng)
的事務(wù)處理能力的衡量標(biāo)準(zhǔn)。 不難理解,依據(jù)最新處理能力值確定的性能權(quán)重可反映服務(wù)器當(dāng)前真實的處理能 力。 如上文所述,若在步驟212判定不存在處理能力值波動率過大的服務(wù)器,則轉(zhuǎn)到 步驟216,通過為每一服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該服務(wù)器的性能權(quán)重。在此之后,計 算步驟200轉(zhuǎn)到步驟218。 每一服務(wù)器的初始權(quán)重可反映該服務(wù)器的原始處理能力。
最后,計算步驟200結(jié)束于步驟218。 除上述采集步驟和計算步驟外,本發(fā)明提供的負(fù)載均衡方法還包括一分發(fā)步驟, 包括接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求的服務(wù)器,并將該處理 請求發(fā)往該服務(wù)器。在具體實現(xiàn)過程中,還可手動輸入各臺服務(wù)器的性能權(quán)重,并基于該性 能權(quán)重確定承擔(dān)處理請求的服務(wù)器。 以下以具體實例來描述基于性能權(quán)重來分發(fā)處理請求的過程。假設(shè)四臺服務(wù)器 (服務(wù)器A、B、C、D)的性能權(quán)重分別為WA = 38、WB = 17、 Wc = 7、WD = 38,則在分發(fā)處理請 求時,分發(fā)給服務(wù)器A的概率為38X,分發(fā)給服務(wù)器B的概率為17X,分發(fā)給服務(wù)器C的概 率為7X,分發(fā)給服務(wù)器D的概率為38%。而在具體計算本次處理請求發(fā)往哪臺服務(wù)器時, 可設(shè)置一隨機數(shù)生成器,用于生成隨機數(shù)。同時設(shè)置服務(wù)器A、B、C、D分別對應(yīng)的命中區(qū)間, 即服務(wù)器A對應(yīng)區(qū)間0 37(對應(yīng)服務(wù)器A的處理概率38% ),服務(wù)器B對應(yīng)區(qū)間38 54 (對應(yīng)服務(wù)器B的處理概率17% ),服務(wù)器C對應(yīng)區(qū)間55 61 (對應(yīng)服務(wù)器C的處理概 率7% ),服務(wù)器D對應(yīng)區(qū)間62 99 (對應(yīng)服務(wù)器D的處理概率38% )。此后,生成一隨機 數(shù)并將其與100進行取模運算,算得的結(jié)果落入哪臺服務(wù)器的命中區(qū)間就由哪臺服務(wù)器承 擔(dān)此次處理請求。例如,若算得的結(jié)果為56,則落入服務(wù)器C的命中區(qū)間,即將由服務(wù)器C 處理此次處理請求。 在具體實現(xiàn)過程中,采集步驟和計算步驟采用異步方式進行,以提高工作效率。例 如,采集步驟和計算步驟均定期執(zhí)行,但二者的執(zhí)行周期可以彼此不同。在這種情況下,采 集步驟可在到達其自身執(zhí)行周期時,將采集到的處理請求隊列長度寫在固定的位置,將采 集到的處理能力值寫在處理能力歷史記錄中。計算步驟可在到達其自身執(zhí)行周期時,在上 述位置讀取處理請求隊列長度,并讀取處理能力歷史記錄,而無需考慮上述處理請求隊列 長度和處理能力歷史記錄是何時寫入的。不難理解,這種異步方式可有效提高處理效率。此 外,分發(fā)步驟在收到處理請求后,可直接讀取計算步驟生成/更新的性能權(quán)重,而無需考慮 上述性能權(quán)重是何時生成/更新的。 由上文所述可知,當(dāng)存在過載服務(wù)器時,基于各臺服務(wù)器的處理請求隊列長度算 得的性能權(quán)重可準(zhǔn)確反映各臺服務(wù)器的繁忙程度,因此在這種情況下,本發(fā)明提供的技術(shù) 方案是依據(jù)各臺服務(wù)器的繁忙程度來進行負(fù)載均衡的。當(dāng)不存在過載服務(wù)器時,若存在處 理能力波動率過大的服務(wù)器,基于各臺服務(wù)器的處理能力算得的性能權(quán)重可準(zhǔn)確的反映各 臺服務(wù)器的當(dāng)前真實處理能力,因此在這種情況下,本發(fā)明提供的技術(shù)方案是依據(jù)各臺服務(wù)器的當(dāng)前真實處理能力來進行負(fù)載均衡的。除上述情況外,本發(fā)明基于為各臺服務(wù)器預(yù) 先設(shè)置的初始權(quán)重進行負(fù)載均衡。 本發(fā)明還提供了一種負(fù)載均衡裝置,下面就結(jié)合圖3對其進行詳細(xì)描述。
圖3是依據(jù)本發(fā)明一較佳實施例的負(fù)載均衡裝置300的邏輯結(jié)構(gòu)示意圖。本發(fā)明 提供的負(fù)載均衡裝置300與多臺服務(wù)器通信連接,如圖3所示,本發(fā)明提供的負(fù)載均衡裝置 300包括采集模塊302、計算模塊304和分發(fā)模塊306。 采集模塊302用于定期采集每一服務(wù)器的處理請求隊列長度和處理能力值,并將 該處理能力值添加到該服務(wù)器的處理能力歷史記錄中。 在具體實現(xiàn)過程中,采集模塊302用于接收每一服務(wù)器定期廣播的運行狀態(tài)消 息,其中包含該服務(wù)器處理請求隊列長度和處理能力值。 在具體實現(xiàn)過程中,采集模塊302中設(shè)有為每一服務(wù)器設(shè)置的故障計時器(未示 出),對于每一服務(wù)器,采集模塊302還用于在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該 服務(wù)器對應(yīng)的故障計時器;定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先 設(shè)置的故障時長時隔離該服務(wù)器。 采集模塊302所執(zhí)行的操作與上文所述的采集步驟相對應(yīng)。有關(guān)采集步驟的具體 內(nèi)容已經(jīng)在前文做了清楚的描述,因此此處不再贅述。
計算模塊304用于定期執(zhí)行如下操作 判斷是否存在處理請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,
若是,則 依據(jù)各服務(wù)器的處理請求隊列長度計算并更新每一服務(wù)器的性
能權(quán)重;
若否,則 依據(jù)每一服務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力
波動率; 判斷是否存在處理能力波動率超過預(yù)先設(shè)置的波動率閾值的服
務(wù)器,若是,則 依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的
性能權(quán)重;
若否,則 對于每一服務(wù)器,以為該服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該
服務(wù)器的性能權(quán)重。 在具體實現(xiàn)過程中,在依據(jù)各服務(wù)器的處理請求隊列長度計算每一服務(wù)器的性能 權(quán)重時,計算模塊304基于下列公式計算每一服務(wù)器的性能權(quán)重
Wn = (L,L2+, +Ln)/Ln 其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。 在具體實現(xiàn)過程中,在依據(jù)各服務(wù)器的最新處理能力值計算每一服務(wù)器的性能權(quán)
重時,計算模塊304基于下列公式計算每一服務(wù)器的性能權(quán)重 WA = In/(V工2+, +In) 其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。
在具體實現(xiàn)過程中,計算模塊304所執(zhí)行的操作與上文所述的計算步驟相對應(yīng)。
有關(guān)計算步驟的具體內(nèi)容已經(jīng)在前文做了清楚的描述,因此此處不再贅述。 分發(fā)模塊306用于接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求
的服務(wù)器,并將該處理請求發(fā)往該服務(wù)器。 在具體實現(xiàn)過程中,分發(fā)模塊306所執(zhí)行的操作與上文所述的分發(fā)步驟相對應(yīng)。
有關(guān)分發(fā)步驟的具體內(nèi)容已經(jīng)在前文做了清楚的描述,因此此處不再贅述。 以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精
神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
一種負(fù)載均衡方法,其特征在于,包括采集步驟,包括定期采集每一服務(wù)器的處理請求隊列長度及處理能力值,將該處理能力值添加到該服務(wù)器的處理能力歷史記錄中;計算步驟,包括定期執(zhí)行如下操作判斷是否存在處理請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,若是,則依據(jù)各服務(wù)器的處理請求隊列長度計算并更新每一服務(wù)器的性能權(quán)重;若否,則依據(jù)每一服務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力波動率;判斷是否存在處理能力波動率超過預(yù)先設(shè)置的波動率閾值的服務(wù)器,若是,則依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的性能權(quán)重;若否,則對于每一服務(wù)器,以為該服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該服務(wù)器的性能權(quán)重;分發(fā)步驟,包括接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求的服務(wù)器,并將該處理請求發(fā)往該服務(wù)器。
2. 根據(jù)權(quán)利要求1所述的負(fù)載均衡方法,其特征在于,所述依據(jù)各服務(wù)器的處理請求 隊列長度計算并更新每一服務(wù)器的性能權(quán)重進一步包括,基于下列公式計算每一服務(wù)器的 性能權(quán)重<formula>formula see original document page 2</formula>其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。
3. 根據(jù)權(quán)利要求1或2所述的負(fù)載均衡方法,其特征在于,所述依據(jù)各服務(wù)器的最新處 理能力值計算并更新每一服務(wù)器的性能權(quán)重進一步包括,基于下列公式計算每一服務(wù)器的 性能權(quán)重<formula>formula see original document page 2</formula>其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。
4. 根據(jù)權(quán)利要求1所述的負(fù)載均衡方法,其特征在于,在所述采集步驟中,所述定期采 集具體包括接收每一服務(wù)器定期廣播的包含處理請求隊列長度及處理能力值的運行狀態(tài) 消息。
5. 根據(jù)權(quán)利要求4所述的負(fù)載均衡方法,其特征在于,對于每一服務(wù)器,所述采集步驟 還包括在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該服務(wù)器對應(yīng)的故障計時器的步驟; 定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先設(shè)置的故障時長時隔離 該服務(wù)器的步驟。
6. —種負(fù)載均衡裝置,與多臺服務(wù)器通信連接,其特征在于,包括 采集模塊,用于定期采集每一服務(wù)器的處理請求隊列長度及處理能力值,將該處理能力值添加到該服 務(wù)器的處理能力歷史記錄中;計算模塊,用于定期執(zhí)行如下操作判斷是否存在處理請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,若是,則依據(jù)各服務(wù)器的處理請求隊列長度計算并更新每一服務(wù)器的性能權(quán)重; 若否,則依據(jù)每一服務(wù)器的處理能力歷史記錄計算該服務(wù)器的處理能力波動率; 判斷是否存在處理能力波動率超過預(yù)先設(shè)置的波動率閾值的服務(wù)器,若是,則 依據(jù)各服務(wù)器的最新處理能力值計算并更新每一服務(wù)器的性能權(quán)重; 若否,則對于每一服務(wù)器,以為該服務(wù)器預(yù)先設(shè)置的初始權(quán)重更新該服務(wù)器的性能權(quán)重; 分發(fā)模塊,用于接收處理請求,依據(jù)各服務(wù)器的性能權(quán)重確定承擔(dān)該處理請求的服務(wù) 器,并將該處理請求發(fā)往該服務(wù)器。
7. 根據(jù)權(quán)利要求6所述的負(fù)載均衡裝置,其特征在于,在依據(jù)各服務(wù)器的處理請求隊 列長度計算并更新每一服務(wù)器的性能權(quán)重時,所述計算模塊基于下列公式計算每一服務(wù)器 的性能權(quán)重Wn = (L一L2+, . . +Ln) /Ln其中Wn為服務(wù)器n的性能權(quán)重,Ln為服務(wù)器n的處理請求隊列長度。
8. 根據(jù)權(quán)利要求6或7所述的負(fù)載均衡裝置,其特征在于,在依據(jù)各服務(wù)器的最新處理 能力值計算并更新每一服務(wù)器的性能權(quán)重時,所述計算模塊基于下列公式計算每一服務(wù)器 的性能權(quán)重WA= In/(V工2+…+工n)其中Wn為服務(wù)器n的性能權(quán)重,In為服務(wù)器n的最新處理能力值。
9. 根據(jù)權(quán)利要求6所述的負(fù)載均衡裝置,其特征在于,所述采集模塊用于接收每一服 務(wù)器定期廣播的包含處理請求隊列長度及處理能力值的運行狀態(tài)消息。
10. 根據(jù)權(quán)利要求9所述的負(fù)載均衡裝置,其特征在于,所述采集模塊中設(shè)有為每一服 務(wù)器設(shè)置的故障計時器,對于每一服務(wù)器,所述采集模塊還用于在收到該服務(wù)器發(fā)出的運行狀態(tài)消息時重置該服務(wù)器對應(yīng)的故障計時器; 定期讀取故障計時器所記錄的時長,并在判定該時長超過預(yù)先設(shè)置的故障時長時隔離 該服務(wù)器。
全文摘要
本發(fā)明涉及負(fù)載均衡技術(shù),針對現(xiàn)有負(fù)載均衡機制可能造成處理異常的缺陷,提供一種負(fù)載均衡方法和負(fù)載均衡裝置。負(fù)載均衡方法包括定期采集每一服務(wù)器的處理請求隊列長度和處理能力值;判斷是否存在請求隊列長度超過預(yù)先設(shè)置的長度閾值的服務(wù)器,若是,則依據(jù)各服務(wù)器的請求隊列長度計算并更新每一服務(wù)器的性能權(quán)重;若否,則判斷是否存在處理能力波動率超過預(yù)先設(shè)置的波動率閾值的服務(wù)器,若是,則依據(jù)各服務(wù)器的處理能力計算并更新每一服務(wù)器的性能權(quán)重;若否,則依據(jù)預(yù)先設(shè)置的初始權(quán)重更新每一服務(wù)器的性能權(quán)重;在收到處理請求時,依據(jù)性能權(quán)重分發(fā)該處理請求。本發(fā)明還提供了一種負(fù)載均衡裝置。本發(fā)明提供的技術(shù)方案可有效消除處理異常。
文檔編號H04L12/56GK101753444SQ20091023962
公開日2010年6月23日 申請日期2009年12月31日 優(yōu)先權(quán)日2009年12月31日
發(fā)明者劉志堯, 呂秋明, 廖炳才, 李升林, 李繼勇, 林偉軍, 王迎鋒, 肖偉, 鄧福喜, 顏小剛 申請人:卓望數(shù)碼技術(shù)(深圳)有限公司