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