亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng)的制作方法

文檔序號(hào):7622414閱讀:133來(lái)源:國(guó)知局
專利名稱:實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息技術(shù)領(lǐng)域,更具體的說(shuō)是涉及一種實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng)。
背景技術(shù)
目前現(xiàn)有網(wǎng)絡(luò)的各個(gè)核心部分隨著業(yè)務(wù)量的提高,訪問(wèn)量和數(shù)據(jù)流量的快速增 長(zhǎng),其處理能力和計(jì)算強(qiáng)度也相應(yīng)地增大,使得單一的設(shè)備根本無(wú)法承擔(dān),因此負(fù)載均衡機(jī) 制應(yīng)運(yùn)而生。負(fù)載均衡是指在網(wǎng)絡(luò)環(huán)境中,將負(fù)載均衡地分派到多臺(tái)計(jì)算機(jī)、網(wǎng)絡(luò)連接器、處理 器、硬件設(shè)備或其它資源上,以便獲得更高的資源利用率,提高系統(tǒng)的吞吐率,降低響應(yīng)時(shí) 間,從而避免負(fù)載過(guò)重?,F(xiàn)有的實(shí)現(xiàn)負(fù)載均衡的方法中,客戶端有待處理的業(yè)務(wù)請(qǐng)求時(shí),發(fā)送相應(yīng)的業(yè)務(wù) 請(qǐng)求由相應(yīng)服務(wù)器進(jìn)行處理,每次進(jìn)行請(qǐng)求處理時(shí),客戶端都會(huì)選擇一個(gè)負(fù)載較輕的服務(wù) 器并與之建立網(wǎng)絡(luò)連接,一次連接只完成一個(gè)請(qǐng)求,當(dāng)執(zhí)行下次請(qǐng)求時(shí),則需要切換連接, 從而達(dá)到負(fù)載均衡的目的,使得服務(wù)器負(fù)載不至于過(guò)重。但是,當(dāng)客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),服務(wù)器會(huì)記錄該請(qǐng)求執(zhí)行后 的狀態(tài),以便后續(xù)的請(qǐng)求能夠在前面已經(jīng)完成的請(qǐng)求的基礎(chǔ)上繼續(xù)執(zhí)行,即是說(shuō),執(zhí)行后續(xù) 發(fā)送的請(qǐng)求時(shí)需要依賴于前面發(fā)送的請(qǐng)求的執(zhí)行狀態(tài),但是采用現(xiàn)有的這種實(shí)現(xiàn)負(fù)載均衡 的方法,在進(jìn)行連接切換時(shí),切換后的服務(wù)器不能獲取切換前已經(jīng)執(zhí)行的請(qǐng)求的執(zhí)行狀態(tài), 就會(huì)導(dǎo)致后續(xù)的執(zhí)行錯(cuò)誤。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng),解決了現(xiàn)有技術(shù)中進(jìn)行 連接切換時(shí),切換后的服務(wù)器不能獲取切換前已經(jīng)執(zhí)行的請(qǐng)求的執(zhí)行狀態(tài),而導(dǎo)致后續(xù)的 執(zhí)行錯(cuò)誤的技術(shù)問(wèn)題。為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案一種實(shí)現(xiàn)負(fù)載均衡的方法,預(yù)先為客戶端的請(qǐng)求設(shè)置上下文變量,所述方法包 括A 接收客戶端發(fā)送的請(qǐng)求,所述請(qǐng)求包括上下文變量;B 判斷所述上下文變量是否為真,如果是,則進(jìn)入步驟E,否則進(jìn)入步驟C ;C:判斷與所述客戶端建立連接的服務(wù)器負(fù)載是否過(guò)重,如果是,則釋放客戶端與 所述服務(wù)器的連接,進(jìn)入步驟D,否則進(jìn)入步驟E ;D 選擇負(fù)載較輕的服務(wù)器,并建立客戶端與所選服務(wù)器的連接,返回步驟C:E 將所述請(qǐng)求發(fā)送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理。優(yōu)選地,所述上下文變量的值預(yù)先設(shè)置為非真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下文相 關(guān)的請(qǐng)求序列的第一個(gè)請(qǐng)求時(shí),所述上下文變量設(shè)置為真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下相 關(guān)的請(qǐng)求序列的最后一個(gè)請(qǐng)求時(shí),所述上下文變量設(shè)置為非真。
優(yōu)選地,所述接收客戶端發(fā)送的請(qǐng)求之前,還包括將已啟動(dòng)的服務(wù)器記錄在注冊(cè)表中;監(jiān)測(cè)所述注冊(cè)表中的服務(wù)器的狀態(tài)并記錄在注冊(cè)表中,所述狀態(tài)包括服務(wù)器的服 務(wù)狀態(tài)以及負(fù)載狀態(tài);依據(jù)注冊(cè)表中的所有服務(wù)器的負(fù)載計(jì)算平均負(fù)載。優(yōu)選地,所述判斷所述服務(wù)器負(fù)載是否過(guò)重包括判斷所述服務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì)于所述平 均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值。優(yōu)選地,所述監(jiān)測(cè)服務(wù)器中已啟動(dòng)的服務(wù)對(duì)象的狀態(tài)并記錄在注冊(cè)表,包括周期性監(jiān)測(cè)已啟動(dòng)的服務(wù)器的狀態(tài)并記錄在注冊(cè)表中;當(dāng)監(jiān)測(cè)到服務(wù)器不可用時(shí),在注冊(cè)表中標(biāo)記其不可用或刪除所述服務(wù)器的記錄。優(yōu)選地,所述方法還包括當(dāng)接收到服務(wù)器返回的處理請(qǐng)求失敗信息時(shí),釋放客戶端與所述服務(wù)器的連接, 返回步驟D。優(yōu)選地,所述當(dāng)服務(wù)器沒(méi)有負(fù)載過(guò)重時(shí),將所述請(qǐng)求發(fā)送至所述服務(wù)器進(jìn)行處理 之后還包括當(dāng)還有客戶端發(fā)送的請(qǐng)求時(shí),重復(fù)執(zhí)行步驟A 步驟E直至處理完所有請(qǐng)求。一種實(shí)現(xiàn)負(fù)載均衡的系統(tǒng),所述系統(tǒng)包括客戶端管理模塊、負(fù)載均衡模塊和服務(wù) 器管理模塊,其中所述客戶端管理模塊,用于接收客戶端發(fā)送的請(qǐng)求,將所述請(qǐng)求發(fā)送給服務(wù)器管 理模塊接收到服務(wù)器管理模塊反饋的與客戶端建立連接的服務(wù)器負(fù)載過(guò)重信息時(shí),釋放 客戶端與所述服務(wù)器的連接并啟動(dòng)負(fù)載均衡模塊,建立客戶端與所述負(fù)載均衡模塊所選服 務(wù)器的連接;負(fù)載均衡模塊,用于選擇負(fù)載較輕的服務(wù)器并所述服務(wù)器的標(biāo)識(shí)信息反饋給客戶 端管理模塊;服務(wù)器管理模塊,用于接收客戶端管理模塊發(fā)送的請(qǐng)求,判斷所述上下文變量是 否為真,如果是,則將所述請(qǐng)求發(fā)送至與所述客戶端連接的服務(wù)器進(jìn)行處理,否則判斷與所 述客戶端連接的服務(wù)器負(fù)載是否過(guò)重;當(dāng)所述服務(wù)器負(fù)載過(guò)重時(shí),則將負(fù)載過(guò)重信息反饋 給客戶端管理模塊,當(dāng)所述服務(wù)器負(fù)載沒(méi)有過(guò)重時(shí),將所述請(qǐng)求發(fā)送至所述服務(wù)器進(jìn)行處理。優(yōu)選地,所述負(fù)載均衡模塊還用于將已啟動(dòng)的服務(wù)器以及所述服務(wù)器的服務(wù)狀態(tài) 和負(fù)載狀態(tài)記錄在注冊(cè)表,所述注冊(cè)表為所述負(fù)載均衡模塊中的內(nèi)存單元;則,所述服務(wù)器管理模塊還用于監(jiān)測(cè)所述記錄的服務(wù)器的服務(wù)狀態(tài)和負(fù)載狀態(tài)并反 饋給負(fù)載均衡模塊。優(yōu)選地,所述負(fù)載均衡模塊還用于根據(jù)記錄的所有服務(wù)器的負(fù)載計(jì)算平均負(fù)載, 則,所述服務(wù)器管理模塊判斷服務(wù)器是否過(guò)重,具體為判斷與所述客戶端連接的服 務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì)于所述平均負(fù)載的百分比是否 大于系統(tǒng)第二預(yù)設(shè)值,如果是,則將負(fù)載過(guò)重信息反饋給客戶端管理模塊,如果否,則指示所述服務(wù)器執(zhí)行所述請(qǐng)求。優(yōu)選地,所述服務(wù)器管理模塊還用于接收服務(wù)器處理請(qǐng)求失敗信息,并將所述信 息反饋給客戶端管理模塊;則,所述客戶端管理模塊還用于接收到處理請(qǐng)求失敗信息時(shí),釋放客戶端與所述服務(wù) 器的連接并重新啟動(dòng)負(fù)載均衡模塊。經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明提供了一種實(shí)現(xiàn)負(fù)載均衡的 方法和系統(tǒng),通過(guò)在客戶端請(qǐng)求中預(yù)先設(shè)置上下文變量,根據(jù)上下文變量的值,判斷得出客 戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的請(qǐng)求,如果是,則直接由與該客戶端建立連接的服務(wù) 器進(jìn)行請(qǐng)求處理,否則,判斷與客戶端連接的服務(wù)器負(fù)載是否過(guò)重,當(dāng)過(guò)重時(shí),則重新選擇 負(fù)載較輕的服務(wù)器與之建立連接,直至選擇出與客戶端建立連接的服務(wù)器負(fù)載沒(méi)有過(guò)重。 采用本發(fā)明避免了客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),由于切換服務(wù)器連接而出現(xiàn) 的錯(cuò)誤,同時(shí)避免了在服務(wù)器負(fù)載過(guò)重的情況下仍繼續(xù)處理客戶端的請(qǐng)求,保障了服務(wù)器 的負(fù)載均衡,提高了負(fù)載均衡的可靠性。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù) 提供的附圖獲得其他的附圖。圖1為本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的方法實(shí)施例1的流程圖;圖2為本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的方法實(shí)施例2的流程圖;圖3為本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的系統(tǒng)具體實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例公開(kāi)了一種實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng),通過(guò)在客戶端請(qǐng)求中預(yù)先 設(shè)置上下文變量,根據(jù)上下文變量的值,判斷得出客戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的 請(qǐng)求,如果是,則直接由與該客戶端建立連接的服務(wù)器進(jìn)行請(qǐng)求處理,否則,判斷與客戶端 連接的服務(wù)器負(fù)載是否過(guò)重,當(dāng)過(guò)重時(shí),則重新選擇負(fù)載較輕的服務(wù)器與之建立連接。采用 本發(fā)明避免了客戶端的發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),由于切換服務(wù)器連接而出現(xiàn)的 錯(cuò)誤,同時(shí)避免了在服務(wù)器負(fù)載過(guò)重的情況下仍繼續(xù)處理客戶端的請(qǐng)求,保障了服務(wù)器的 負(fù)載均衡,提高了負(fù)載均衡的可靠性。參見(jiàn)圖1,示出了本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的方法實(shí)施例1的流程圖,可以包括以 下步驟步驟101 接收客戶端發(fā)送的請(qǐng)求,所述請(qǐng)求包括上下文變量。在分布式應(yīng)用系統(tǒng)中,客戶端與服務(wù)器之間的交互需要基于兩者之間的網(wǎng)絡(luò)連接,然后客戶端發(fā)送相應(yīng)的請(qǐng)求,服務(wù)器接收所述請(qǐng)求并進(jìn)行處理??蛻舳税l(fā)送的請(qǐng)求可能是上下文相關(guān)的請(qǐng)求,即是說(shuō),執(zhí)行后續(xù)發(fā)送的請(qǐng)求時(shí)需 要依賴于前面發(fā)送的請(qǐng)求的執(zhí)行狀態(tài)。因此,對(duì)于客戶端的請(qǐng)求,預(yù)先定義一個(gè)上下文相關(guān) 變量,上下文變量的值預(yù)先設(shè)置為非真,并為所有上下文相關(guān)的請(qǐng)求設(shè)置一個(gè)上下文相關(guān)
的請(qǐng)求序列,即設(shè)置一組請(qǐng)求的有序集合,表示為R =〈巧、r2.....rn>, η >= 1,如果對(duì)于
任意的i,i > l,i <= η,r,的執(zhí)行依賴于IV1的執(zhí)行狀態(tài),則稱R為上下文相關(guān)的請(qǐng)求序 列,并稱R中的每一個(gè)請(qǐng)求為有狀態(tài)請(qǐng)求。當(dāng)客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求序列的第一個(gè)請(qǐng)求時(shí),將所述上下文變 量設(shè)置為真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下相關(guān)的請(qǐng)求序列的最后一個(gè)請(qǐng)求時(shí),將所述上下 文變量設(shè)置為非真。其具體的實(shí)現(xiàn)過(guò)程可以是為上下文相關(guān)的請(qǐng)求序列定義一段執(zhí)行程 序,舉例如下對(duì)于一個(gè)上下文相關(guān)的請(qǐng)求序列R = <Γι,Γ2.....rn>。參考事務(wù)管理的一般方法,
用Rbegin定義一個(gè)上下文相關(guān)的請(qǐng)求序列的開(kāi)始,用Rend定義一個(gè)上下文相關(guān)的請(qǐng)求序
列的結(jié)束,則客戶端執(zhí)行上下文相關(guān)的請(qǐng)求序列R的程序結(jié)構(gòu)如下
Rbegin ri
Γ2
Γη
Rend在客戶端引入上下文變量rContext,預(yù)先初始化rContext的值為false,當(dāng)客戶 端執(zhí)行該上下文請(qǐng)求序列R時(shí),Rbegin開(kāi)始一個(gè)上下文相關(guān)的請(qǐng)求序列,Rbegin的效果是 將rContext置為true,Rend結(jié)束一個(gè)上下文相關(guān)的請(qǐng)求序列,Rend的效果是將rContext 置為false。需要說(shuō)明的,不能嵌套定義上下文相關(guān)的請(qǐng)求序列,即不能在上下文相關(guān)的請(qǐng)求 序列中定義上下文相關(guān)的請(qǐng)求序列,比如,下面的程序結(jié)構(gòu)是錯(cuò)誤的Rbegin ri
Rbegin rn rl2 Rend
Γη
Rend其中,Rbegin和Rend必須配對(duì)使用。還需要說(shuō)明的是,不是每一個(gè)請(qǐng)求都必須在一個(gè)上下文相關(guān)的請(qǐng)求序列中,對(duì)于 無(wú)狀態(tài)的請(qǐng)求,即不是上下文相關(guān)的請(qǐng)求,上下文變量仍為false??蛻舳税l(fā)送的請(qǐng)求即包含該上下文變量。步驟102 判斷所述上下文變量是否為真,如果是,則進(jìn)入步驟106,如果否,則進(jìn) 入步驟103。通過(guò)所述上下文變量的值,即可得知,客戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的請(qǐng) 求,當(dāng)上下文變量為真時(shí),說(shuō)明客戶端發(fā)送的請(qǐng)求為上下相關(guān)的,當(dāng)上下文變量為假時(shí),說(shuō) 明客戶端發(fā)送的請(qǐng)求不是上下相關(guān)的。與客戶端建立連接的服務(wù)器在處理一次請(qǐng)求后并不斷開(kāi)該連接,接收到客戶端的 請(qǐng)求時(shí),會(huì)先判斷該客戶端是否與相應(yīng)服務(wù)器建立連接,當(dāng)建立連接時(shí),則判斷客戶端請(qǐng)求 是否為上下文相關(guān)的請(qǐng)求,以決定是否繼續(xù)由該服務(wù)器進(jìn)行請(qǐng)求處理,如果沒(méi)有連接,則進(jìn) 入步驟105繼續(xù)執(zhí)行。步驟103 判斷與所述客戶端建立連接的服務(wù)器負(fù)載是否過(guò)重,如果是,則進(jìn)入步 驟104,否則進(jìn)入步驟106。為了保障服務(wù)器的負(fù)載均衡,當(dāng)客戶端發(fā)送的請(qǐng)求不是上下文相關(guān)的請(qǐng)求時(shí),需 要判斷與該客戶端建立連接的服務(wù)器的負(fù)載是否過(guò)重。服務(wù)器在開(kāi)始啟動(dòng)運(yùn)行時(shí),系統(tǒng)即記錄下已啟動(dòng)的服務(wù)器,保存在注冊(cè)表中,注冊(cè) 表是系統(tǒng)中的內(nèi)存單元。記錄下已啟動(dòng)的服務(wù)器,即可對(duì)該服務(wù)器進(jìn)行監(jiān)測(cè),監(jiān)測(cè)服務(wù)器的 狀態(tài)并記錄在注冊(cè)表中,所述狀態(tài)包括服務(wù)器的服務(wù)狀態(tài),即是否正在處理請(qǐng)求或已經(jīng)退 出,以及負(fù)載狀態(tài)。所記錄服務(wù)器的負(fù)載狀態(tài)可以是通過(guò)監(jiān)測(cè)服務(wù)器的流量、任務(wù)量等指標(biāo) 來(lái)獲得。系統(tǒng)根據(jù)記錄的各服務(wù)器的負(fù)載情況,即可計(jì)算出所有服務(wù)器的平均負(fù)載。其中,判斷與客戶端連接的服務(wù)器負(fù)載是否過(guò)重,判斷的具體的標(biāo)準(zhǔn)可以為判斷 該服務(wù)器的負(fù)載是否大于系統(tǒng)的第一預(yù)設(shè)值,如果大于系統(tǒng)的第一預(yù)設(shè)值,則可進(jìn)入步驟 104,如果小于系統(tǒng)的第一預(yù)設(shè)值,則可進(jìn)入步驟106。判斷的具體標(biāo)準(zhǔn),另一個(gè)優(yōu)選的方案可以是判斷該服務(wù)器的負(fù)載相對(duì)于平均 負(fù)載的百分比是否大于系統(tǒng)的第二預(yù)設(shè)值,如果是,則進(jìn)入步驟104,如果否,則進(jìn)入步驟106。判斷的具體標(biāo)準(zhǔn),另一個(gè)優(yōu)選的方案還可以是判斷該服務(wù)器負(fù)載是否大于系統(tǒng) 第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì)于平均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值,如果 是,則進(jìn)入步驟104,如果否,則進(jìn)入步驟106。其中,第一預(yù)設(shè)值和第二預(yù)設(shè)值是根據(jù)實(shí)際應(yīng)用情況具體設(shè)置的。例如,在快速傅里葉變換的應(yīng)用中,快速傅立葉變換是計(jì)算密集型應(yīng)用,在該應(yīng)用 中,CPU作為關(guān)鍵資源被多個(gè)并發(fā)執(zhí)行的快速傅立葉變換任務(wù)共享,且限制一個(gè)服務(wù)器上并 發(fā)執(zhí)行的任務(wù)的個(gè)數(shù)不能大于CPU個(gè)數(shù)的4倍,在單cpu的服務(wù)器上,一個(gè)服務(wù)器的并發(fā)執(zhí) 行的任務(wù)個(gè)數(shù)最大為4。服務(wù)器的負(fù)載可以用服務(wù)器上正在執(zhí)行的并發(fā)任務(wù)數(shù)表示,此時(shí), 第一預(yù)設(shè)值為1,第二預(yù)設(shè)值為100%。此應(yīng)用中的第一預(yù)設(shè)值為1,表示如果該服務(wù)器上的 并發(fā)執(zhí)行任務(wù)數(shù)不多于2個(gè),即使出現(xiàn)負(fù)載不均衡,也不會(huì)影響該服務(wù)器上各任務(wù)的執(zhí)行, 因此不需要切換其它服務(wù)器來(lái)執(zhí)行該任務(wù),只有當(dāng)該服務(wù)器的并發(fā)執(zhí)行任務(wù)數(shù)大于2時(shí), 才需要考慮切換服務(wù)器。第二預(yù)設(shè)值為100%,表示如果該服務(wù)器上的負(fù)載比平均負(fù)載大, 則至少存在一個(gè)服務(wù)器,其并發(fā)執(zhí)行的任務(wù)比該服務(wù)器上并發(fā)執(zhí)行的任務(wù)少1,因此,新的 任務(wù)應(yīng)該切換到并發(fā)任務(wù)數(shù)小的服務(wù)器上執(zhí)行。又如,在訂票服務(wù)的應(yīng)用中,訂票業(yè)務(wù)為典型的在線事務(wù)處理服務(wù),其單個(gè)業(yè)務(wù)的 計(jì)算量并不大,且響應(yīng)時(shí)間也很快,訂票業(yè)務(wù)主要面臨的是大規(guī)模訂票業(yè)務(wù)的并發(fā)執(zhí)行問(wèn) 題,如果業(yè)務(wù)的并發(fā)度不高,則多個(gè)業(yè)務(wù)在一個(gè)服務(wù)器上執(zhí)行對(duì)用戶而言沒(méi)有明顯的影響, 但當(dāng)并發(fā)度超過(guò)一定限度以后,服務(wù)器的性能將急劇下降。目前普通的個(gè)人計(jì)算機(jī)中的服 務(wù)器基本能夠有效支持100個(gè)業(yè)務(wù)的并發(fā)執(zhí)行,因此,訂票系統(tǒng)會(huì)限制業(yè)務(wù)的并發(fā)度,當(dāng)業(yè) 務(wù)個(gè)數(shù)大于該并發(fā)度時(shí),超過(guò)的業(yè)務(wù)將進(jìn)入等待隊(duì)列,等待其它業(yè)務(wù)執(zhí)行完,再執(zhí)行。在該 應(yīng)用中,服務(wù)器的負(fù)載可以用服務(wù)器上的業(yè)務(wù)數(shù)(正在執(zhí)行和處于等待狀態(tài)的業(yè)務(wù)數(shù))表 示,對(duì)于普通的服務(wù)器,第一預(yù)設(shè)值為100,表示如果服務(wù)器上的并發(fā)業(yè)務(wù)數(shù)沒(méi)有超過(guò)100, 則不需要重新分配服務(wù)器,第二預(yù)設(shè)值可以設(shè)置為105%,表示如果該服務(wù)器上的業(yè)務(wù)數(shù)比 各個(gè)服務(wù)器上的平均業(yè)務(wù)數(shù)多,就需要將新的業(yè)務(wù)調(diào)度到負(fù)載較輕的服務(wù)器上執(zhí)行。需要說(shuō)明的是,以上所列舉的實(shí)例只是實(shí)際場(chǎng)景中的兩個(gè)具體應(yīng)用,并不是作為 對(duì)第一預(yù)設(shè)值以及第二預(yù)設(shè)值的具體限定,本領(lǐng)域技術(shù)人員可以了解的是,第一預(yù)設(shè)值和 第二預(yù)設(shè)值根據(jù)不同的應(yīng)用情況而不同,在此不再一一贅述。步驟104 釋放客戶端與所述服務(wù)器的連接。在服務(wù)器負(fù)載過(guò)重的情況下,該服務(wù)器不執(zhí)行客戶端的請(qǐng)求,則釋放客戶端與所 述服務(wù)器的網(wǎng)絡(luò)連接,繼續(xù)執(zhí)行后續(xù)步驟。步驟105 選擇負(fù)載較輕的服務(wù)器,并建立客戶端與所選擇服務(wù)器的連接,返回步 驟 103。由步驟103中所述可知,系統(tǒng)會(huì)對(duì)服務(wù)器的狀態(tài)進(jìn)行監(jiān)測(cè)并記錄,根據(jù)記錄的負(fù) 載情況,即可選出負(fù)載最輕的一個(gè)服務(wù)器,根據(jù)該服務(wù)器的標(biāo)識(shí)信息建立客戶端與所述服 務(wù)器的網(wǎng)絡(luò)連接,由于是由服務(wù)器中相應(yīng)的服務(wù)對(duì)象進(jìn)行請(qǐng)求處理,其具體可以是根據(jù)服 務(wù)器中用于處理相應(yīng)請(qǐng)求的服務(wù)對(duì)象的對(duì)象標(biāo)識(shí)符,該對(duì)象標(biāo)識(shí)符可惟一標(biāo)識(shí)一個(gè)服務(wù)對(duì) 象。建立客戶端與所述服務(wù)器中的服務(wù)對(duì)象的網(wǎng)路連接。需要說(shuō)明的是,在本實(shí)施例中,當(dāng)客戶端沒(méi)有與服務(wù)器的連接關(guān)系時(shí),由系統(tǒng)選擇出負(fù)載較輕的服務(wù)器與該客戶端建立連接,而作為客戶端無(wú)需知道是與哪個(gè)具體服務(wù)器建 立的連接。步驟106 將所述請(qǐng)求發(fā)送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理。當(dāng)所述上下文變量為真,即客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),或者,當(dāng)上 下文變量為非真時(shí)且經(jīng)判斷與客戶端建立連接的服務(wù)器負(fù)載沒(méi)有過(guò)重時(shí),則將所述請(qǐng)求發(fā) 送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理。在本實(shí)施例中,當(dāng)判斷出上下文變量為真,即客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的 請(qǐng)求時(shí),則直接由與客戶端之前建立連接的服務(wù)器進(jìn)行請(qǐng)求處理,即便該服務(wù)器負(fù)載已經(jīng) 過(guò)重,從而保證了處理上下文的請(qǐng)求的正確性,避免切換服務(wù)器導(dǎo)致處理出現(xiàn)錯(cuò)誤。如果客戶端還有其他待處理的請(qǐng)求,則重復(fù)執(zhí)行步驟101 步驟106的所述操作, 直至處理完所有的請(qǐng)求。需要說(shuō)明的是,如果服務(wù)器處理請(qǐng)求失敗,則接收服務(wù)器返回的處理失敗信息,則 返回步驟104繼續(xù)執(zhí)行。在本發(fā)明實(shí)施例中,通過(guò)在客戶端請(qǐng)求中預(yù)先設(shè)置上下文變量,根據(jù)上下文變量 的值,判斷得出客戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的請(qǐng)求,如果是,則直接由與該客戶端 建立連接的服務(wù)器進(jìn)行請(qǐng)求處理,否則,判斷與客戶端連接的服務(wù)器負(fù)載是否過(guò)重,當(dāng)過(guò)重 時(shí),則重新選擇負(fù)載較輕的服務(wù)器與之建立連接,直至選擇出與客戶端建立連接的服務(wù)器 負(fù)載沒(méi)有過(guò)重。采用本發(fā)明避免了客戶端的發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),由于切換 服務(wù)器連接而出現(xiàn)的錯(cuò)誤,同時(shí)保障了服務(wù)器的負(fù)載均衡。參見(jiàn)圖2,示出了本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的方法具體實(shí)施例2的流程圖,可以包 括以下步驟步驟201 將已啟動(dòng)的服務(wù)器記錄在注冊(cè)表中,監(jiān)測(cè)并記錄所述注冊(cè)表中的服務(wù) 器的狀態(tài)。服務(wù)器開(kāi)始啟動(dòng)運(yùn)行時(shí),系統(tǒng)即記錄下已啟動(dòng)的服務(wù)器,保存在注冊(cè)表中,注冊(cè)表 是系統(tǒng)中的內(nèi)存單元,并監(jiān)測(cè)注冊(cè)表中已記錄的服務(wù)器的狀態(tài),包括服務(wù)器的服務(wù)狀態(tài)以 及負(fù)載狀態(tài),并將狀態(tài)記錄在注冊(cè)表中。其中,對(duì)服務(wù)器的監(jiān)測(cè)是一直執(zhí)行的,優(yōu)選地,可以周期性進(jìn)行狀態(tài)服務(wù)器的狀態(tài) 監(jiān)測(cè),具體周期可以根據(jù)實(shí)際情況而設(shè)定,當(dāng)監(jiān)測(cè)到服務(wù)器不可用,或者已經(jīng)退出,則從注 冊(cè)表中刪除該服務(wù)對(duì)象,服務(wù)器可用且運(yùn)行正常,則記錄下該服務(wù)器的負(fù)載,如果服務(wù)器的 服務(wù)狀態(tài)不確定,則標(biāo)記其為不可用。步驟202 依據(jù)注冊(cè)表中的所有服務(wù)器的負(fù)載計(jì)算平均負(fù)載。根據(jù)記錄的服務(wù)器的負(fù)載情況,計(jì)算平均負(fù)載。步驟203 接收客戶端發(fā)送的請(qǐng)求,所述請(qǐng)求包括上下文變量。其中,預(yù)先為客戶端的請(qǐng)求設(shè)置上下文變量,,上下文變量的值預(yù)先設(shè)置為非真, 對(duì)于客戶端的上下文相關(guān)的請(qǐng)求,設(shè)置一個(gè)上下文相關(guān)的請(qǐng)求序列,具體可參見(jiàn)實(shí)施例1 所述。當(dāng)客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求序列的第一個(gè)請(qǐng)求時(shí),將所述上下文變 量設(shè)置為真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下相關(guān)的請(qǐng)求序列的最后一個(gè)請(qǐng)求時(shí),將所述上下 文變量設(shè)置為非真。
步驟204 判斷所述上下文變量是否為真,如果是,則進(jìn)入步驟208,如果否,則進(jìn) 入步驟205。通過(guò)所述上下文變量的值,即可得知,客戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的請(qǐng) 求,當(dāng)上下文變量為真時(shí),說(shuō)明客戶端發(fā)送的請(qǐng)求為上下相關(guān)的,當(dāng)上下文變量為假時(shí),說(shuō) 明客戶端發(fā)送的請(qǐng)求不是上下相關(guān)的。其中,與客戶端建立連接的服務(wù)器在處理一次請(qǐng)求后并不斷開(kāi)該連接,接收到客 戶端的請(qǐng)求時(shí),會(huì)先判斷該客戶端是否與相應(yīng)服務(wù)器建立連接,當(dāng)建立連接時(shí),則判斷客戶 端端請(qǐng)求是否為上下文相關(guān)的請(qǐng)求,以決定是否繼續(xù)由該服務(wù)器進(jìn)行請(qǐng)求處理,如果沒(méi)有 連接,則進(jìn)入步驟207繼續(xù)執(zhí)行。步驟205 判斷所述服務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì) 于所述平均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值,如果是,則進(jìn)入步驟206,如果否,則進(jìn) 入步驟208。其中,系統(tǒng)第一預(yù)設(shè)值以及系統(tǒng)第二預(yù)設(shè)值是根據(jù)實(shí)際應(yīng)用情況預(yù)先設(shè)置的,具 體可參見(jiàn)實(shí)施例1所述。當(dāng)服務(wù)器的負(fù)載大于系統(tǒng)第一預(yù)設(shè)值且服務(wù)器的負(fù)載相對(duì)于平均負(fù)載的百分比 大于系統(tǒng)第二預(yù)設(shè)值時(shí),則認(rèn)為該服務(wù)器負(fù)載過(guò)重,否則,認(rèn)為服務(wù)器負(fù)載沒(méi)有過(guò)重。步驟206 釋放客戶端與所述服務(wù)器的連接。在服務(wù)器負(fù)載過(guò)重的情況下,該服務(wù)器不執(zhí)行客戶端的請(qǐng)求,則釋放客戶端與所 述服務(wù)器的網(wǎng)絡(luò)連接,繼續(xù)執(zhí)行后續(xù)步驟。步驟207 選擇負(fù)載較輕的服務(wù)器,并建立客戶端與所選擇服務(wù)器的連接,返回步 驟 205。步驟208 將所述請(qǐng)求發(fā)送至所述服務(wù)器,并接收所述服務(wù)器處理請(qǐng)求后返回的結(jié)果。步驟209 依據(jù)返回的結(jié)果判斷服務(wù)器是否處理成功,如果是,則進(jìn)入步驟210,如 果否,返回步驟206。服務(wù)器進(jìn)行請(qǐng)求處理,當(dāng)處理失敗,則將處理請(qǐng)求失敗信息返回給系統(tǒng),當(dāng)接收到 該處理請(qǐng)求失敗信息時(shí),則重新選擇服務(wù)器,以保證請(qǐng)求執(zhí)行成功。步驟210 當(dāng)還有客戶端發(fā)送的請(qǐng)求時(shí),返回步驟204。執(zhí)行完一個(gè)請(qǐng)求后,會(huì)判斷是否還有其他待處理的請(qǐng)求,當(dāng)客戶端還有其他待處 理的請(qǐng)求,則繼續(xù)接收所述客戶端發(fā)送的請(qǐng)求,返回步驟204,直至處理完所有請(qǐng)求,結(jié)束整 個(gè)流程。如果沒(méi)有其他請(qǐng)求時(shí),直接結(jié)束流程。在本發(fā)明實(shí)施例中,將已啟動(dòng)的服務(wù)器進(jìn)行監(jiān)測(cè)并記錄服務(wù)器的狀態(tài),接收到客 戶端的請(qǐng)求時(shí),根據(jù)客戶端預(yù)先設(shè)置的上下文相關(guān)變量的值,判斷得出客戶端發(fā)送的請(qǐng)求 是否為上下文相關(guān)的請(qǐng)求,如果是,則直接由與該客戶端建立連接的服務(wù)器進(jìn)行請(qǐng)求處理, 否則,判斷與客戶端連接的服務(wù)器負(fù)載是否過(guò)重,當(dāng)過(guò)重時(shí),根據(jù)記錄的負(fù)載情況,重新選 擇出負(fù)載較輕的服務(wù)器與之建立連接,并重新判斷該服務(wù)器的負(fù)載,直至選擇出與客戶端 建立連接的服務(wù)器負(fù)載沒(méi)有過(guò)重。既避免了客戶端的發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí), 由于切換服務(wù)器連接而出現(xiàn)的錯(cuò)誤,同時(shí)避免了在服務(wù)器負(fù)載過(guò)重的情況下仍繼續(xù)處理客 戶端的請(qǐng)求,保障了服務(wù)器的負(fù)載均衡,且服務(wù)器在處理請(qǐng)求失敗后,則重新選擇其他服務(wù)器,保證了請(qǐng)求執(zhí)行的成功率。參見(jiàn)圖3,示出了本發(fā)明一種實(shí)現(xiàn)負(fù)載均衡的系統(tǒng)具體實(shí)施例的結(jié)構(gòu)圖,所述系統(tǒng) 包括客戶端管理模301、負(fù)載均衡模302和服務(wù)器管理模塊303。所述客戶端管理模塊301 用于接收客戶端發(fā)送的請(qǐng)求,將所述請(qǐng)求發(fā)送給服務(wù) 器管理模塊接收到服務(wù)器管理模塊反饋的與客戶端建立連接的服務(wù)器負(fù)載過(guò)重信息時(shí), 釋放客戶端與所述服務(wù)器的連接并啟動(dòng)負(fù)載均衡模塊,建立客戶端與所述負(fù)載均衡模塊所 選服務(wù)器的連接。所述負(fù)載均衡模塊302 用于選擇負(fù)載較輕的服務(wù)器并所述服務(wù)器的標(biāo)識(shí)信息反 饋給客戶端管理模塊。所述服務(wù)器管理模塊303,用于接收客戶端管理模塊301發(fā)送的請(qǐng)求,判斷所述上 下文變量是否為真,如果是,則將所述請(qǐng)求發(fā)送至與所述客戶端連接的服務(wù)器進(jìn)行處理,否 則判斷與所述客戶端連接的服務(wù)器負(fù)載是否過(guò)重;當(dāng)所述服務(wù)器負(fù)載過(guò)重時(shí),則將負(fù)載過(guò) 重信息反饋給客戶端管理模塊301,當(dāng)所述服務(wù)器負(fù)載沒(méi)有過(guò)重時(shí),將所述請(qǐng)求發(fā)送至所述 服務(wù)器進(jìn)行處理。對(duì)于客戶端的上下文相關(guān)的請(qǐng)求序列,預(yù)先定義一個(gè)上下文相關(guān)變量,上下文變 量的值預(yù)先設(shè)置為非真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求序列的第一個(gè)請(qǐng)求時(shí), 將所述上下文變量設(shè)置為真,當(dāng)客戶端發(fā)送的請(qǐng)求為上下相關(guān)的請(qǐng)求序列的最后一個(gè)請(qǐng)求 時(shí),將所述上下文變量設(shè)置為非真。與客戶端建立連接的服務(wù)器在處理一次請(qǐng)求后并不斷開(kāi)該連接,客戶端管理模塊 301接收到客戶端的請(qǐng)求時(shí),其還可以判斷該客戶端是否與相應(yīng)服務(wù)器建立連接,如果是, 啟動(dòng)負(fù)載均衡模塊303判斷客戶端端請(qǐng)求是否為上下文相關(guān)的請(qǐng)求,以決定是否繼續(xù)由該 服務(wù)器進(jìn)行請(qǐng)求處理,否則啟動(dòng)負(fù)載均衡模塊302,建立客戶端與負(fù)載模塊302選擇出的服 務(wù)器的連接。本發(fā)明所提供的負(fù)載均衡系統(tǒng)中,所述的客戶端管理模塊301可與客戶端處于一 個(gè)進(jìn)程中,負(fù)責(zé)管理客戶端與服務(wù)器之間的連接,管理客戶端發(fā)送的請(qǐng)求消息;所述的服務(wù) 器管理模塊303可與服務(wù)器方處于一個(gè)進(jìn)程中,負(fù)責(zé)監(jiān)測(cè)服務(wù)器的負(fù)載情況,在服務(wù)器負(fù) 載過(guò)重時(shí),指示服務(wù)器拒絕執(zhí)行所述請(qǐng)求;所述的負(fù)載均衡模塊302,可以是一個(gè)獨(dú)立的進(jìn) 程或者設(shè)備,在接收到客戶端管理模塊301請(qǐng)求分配服務(wù)器的信息時(shí),選擇負(fù)載較輕的服 務(wù)器反饋給客戶端管理模塊301,以便于客戶端管理模塊301建立客戶端與所選擇服務(wù)器 的連接。其中,所述的負(fù)載均衡模塊302還用于將已啟動(dòng)的服務(wù)器以及所述服務(wù)器的服務(wù) 狀態(tài)和負(fù)載狀態(tài)記錄在注冊(cè)表中,依據(jù)記錄的服務(wù)器的負(fù)載情況計(jì)算平均負(fù)載,注冊(cè)表為 負(fù)載均衡模塊302中的內(nèi)存單元,則,所述服務(wù)器管理模塊303還用于監(jiān)測(cè)所述注冊(cè)表中的服務(wù)器的服務(wù)狀態(tài)和負(fù)載 狀態(tài)并反饋給負(fù)載均衡模塊302。其中,所述服務(wù)器管理模塊303判斷服務(wù)器負(fù)載是否過(guò)重,其具體可以是判斷所 述客戶端連接的服務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值,如果是,則確認(rèn)負(fù)載過(guò)重,將負(fù)載過(guò) 重信息反饋給客戶端管理模塊301,如果否,則將所述請(qǐng)求發(fā)送給該服務(wù)器進(jìn)行處理?;蛘?,判斷與所述客戶端連接的服務(wù)器負(fù)載相對(duì)于所述平均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值,如果是,則確認(rèn)負(fù)載過(guò)重,將負(fù)載過(guò)重信息反饋給客戶端管理模塊301,如果 否,則將所述請(qǐng)求發(fā)送給該服務(wù)器進(jìn)行處理。或者,判斷與所述客戶端連接的服務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù) 載相對(duì)于所述平均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值,如果是,則確認(rèn)負(fù)載過(guò)重,將負(fù) 載過(guò)重信息反饋給客戶端管理模塊301,如果否,則將所述請(qǐng)求發(fā)送給該服務(wù)器進(jìn)行處理。其中,所述服務(wù)器管理模塊303還用于接收服務(wù)器處理請(qǐng)求失敗信息,并將所述 信息反饋給客戶端管理模塊301,則,所述客戶端管理模塊還用于接收到處理請(qǐng)求失敗信息時(shí),釋放客戶端與所述服務(wù) 器的連接并重新啟動(dòng)負(fù)載均衡模塊302?;诒景l(fā)明的實(shí)現(xiàn)負(fù)載均衡的系統(tǒng),實(shí)現(xiàn)負(fù)載均衡的方法可描述如下服務(wù)器管理模塊監(jiān)測(cè)到服務(wù)器啟動(dòng)時(shí),將啟動(dòng)的服務(wù)器信息反饋給負(fù)載均衡模 塊,由負(fù)載均衡模塊記錄在注冊(cè)表中,并向服務(wù)器管理模塊發(fā)送負(fù)載監(jiān)測(cè)請(qǐng)求,指示服務(wù)器 管理模塊對(duì)注冊(cè)表中記錄的服務(wù)器進(jìn)行狀態(tài)監(jiān)測(cè),服務(wù)器管理模塊在將監(jiān)測(cè)結(jié)果反饋給負(fù) 載均衡模塊,由負(fù)載均衡模塊記錄在注冊(cè)表并依據(jù)所有服務(wù)器的負(fù)載計(jì)算出平均負(fù)載。客戶端管理模塊接收到客戶請(qǐng)求時(shí),首先判斷該客戶端是否已與相應(yīng)的服務(wù)器建 立連接,如果沒(méi)有,則指示負(fù)載均衡模塊選擇一個(gè)負(fù)載較輕的服務(wù)器,以便于建立客戶端與 所選服務(wù)器的連接;如果已經(jīng)建立連接,向服務(wù)器管理模塊發(fā)送所述請(qǐng)求,服務(wù)器管理模塊 接收到該請(qǐng)求后,首先判斷該請(qǐng)求攜帶的上下文變量是否為真,如果是,則將所述請(qǐng)求發(fā)送 至與客戶端建立連接的服務(wù)器進(jìn)行處理,否則判斷處理該請(qǐng)求的服務(wù)器的負(fù)載是否過(guò)重, 如果過(guò)重,則將過(guò)重信息反饋給客戶端管理模塊,客戶端管理模塊指示客戶端釋放與所述 服務(wù)器的連接,重新指示負(fù)載均衡模塊選擇一個(gè)負(fù)載較輕的服務(wù)器;如果沒(méi)有過(guò)重,則將所 述請(qǐng)求發(fā)送至服務(wù)器,以便于服務(wù)器處理所述請(qǐng)求。服務(wù)器管理模塊將服務(wù)器的處理結(jié)果反饋給客戶端管理模塊,如果請(qǐng)求處理成 功,則將結(jié)果返回給客戶端,如果失敗,則客戶端管理模塊釋放客戶端與該服務(wù)器的連接, 重新指示負(fù)載均衡模塊選擇一個(gè)負(fù)載較輕的服務(wù)器。在本發(fā)明實(shí)施例中,通過(guò)在客戶端請(qǐng)求中預(yù)先設(shè)置上下文變量,根據(jù)上下文變量 的值,判斷得出客戶端發(fā)送的請(qǐng)求是否為上下文相關(guān)的請(qǐng)求,如果是,則直接由與該客戶端 建立連接的服務(wù)器進(jìn)行請(qǐng)求處理,否則,判斷與客戶端連接的服務(wù)器負(fù)載是否過(guò)重,當(dāng)過(guò)重 時(shí),則重新選擇負(fù)載較輕的服務(wù)器與之建立連接,直至選擇出與客戶端建立連接的服務(wù)器 負(fù)載沒(méi)有過(guò)重。采用本發(fā)明在保障了服務(wù)器的負(fù)載均衡的情況下,避免了客戶端的發(fā)送的 請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),由于切換服務(wù)器連接而出現(xiàn)的錯(cuò)誤。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可 以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單 元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其 中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性 勞動(dòng)的情況下,即可以理解并實(shí)施。本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他 實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置 而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將 一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作 之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體 意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括 那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或
者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)......”限定的要素,
并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明 將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一 致的最寬的范圍。
權(quán)利要求
1.一種實(shí)現(xiàn)負(fù)載均衡的方法,其特征在于,預(yù)先為客戶端的請(qǐng)求設(shè)置上下文變量,所述 方法包括A 接收客戶端發(fā)送的請(qǐng)求,所述請(qǐng)求包括上下文變量; B 判斷所述上下文變量是否為真,如果是,則進(jìn)入步驟E,否則進(jìn)入步驟C ; C 判斷與所述客戶端建立連接的服務(wù)器負(fù)載是否過(guò)重,如果是,則釋放客戶端與所述 服務(wù)器的連接,進(jìn)入步驟D,否則進(jìn)入步驟E ;D 選擇負(fù)載較輕的服務(wù)器,并建立客戶端與所選服務(wù)器的連接,返回步驟C E 將所述請(qǐng)求發(fā)送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述上下文變量的值預(yù)先設(shè)置為非真,當(dāng) 客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求序列的第一個(gè)請(qǐng)求時(shí),所述上下文變量設(shè)置為真, 當(dāng)客戶端發(fā)送的請(qǐng)求為上下相關(guān)的請(qǐng)求序列的最后一個(gè)請(qǐng)求時(shí),所述上下文變量設(shè)置為非 直ο
3.根據(jù)權(quán)利要求ι所述的方法,其特征在于,所述接收客戶端發(fā)送的請(qǐng)求之前,還包括將已啟動(dòng)的服務(wù)器記錄在注冊(cè)表中;監(jiān)測(cè)所述注冊(cè)表中的服務(wù)器的狀態(tài)并記錄在注冊(cè)表中,所述狀態(tài)包括服務(wù)器的服務(wù)狀 態(tài)以及負(fù)載狀態(tài);依據(jù)注冊(cè)表中的所有服務(wù)器的負(fù)載計(jì)算平均負(fù)載。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷所述服務(wù)器負(fù)載是否過(guò)重包括 判斷所述服務(wù)器負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì)于所述平均負(fù)載的百分比是否大于系統(tǒng)第二預(yù)設(shè)值。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述監(jiān)測(cè)服務(wù)器中已啟動(dòng)的服務(wù)對(duì)象的 狀態(tài)并記錄在注冊(cè)表,包括周期性監(jiān)測(cè)已啟動(dòng)的服務(wù)器的狀態(tài)并記錄在注冊(cè)表中;當(dāng)監(jiān)測(cè)到服務(wù)器不可用時(shí),在注冊(cè)表中標(biāo)記其不可用或刪除所述服務(wù)器的記錄。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)接收到服務(wù)器返回的處理請(qǐng)求失敗信息時(shí),釋放客戶端與所述服務(wù)器的連接,返回 步驟D。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)服務(wù)器沒(méi)有負(fù)載過(guò)重時(shí),將所述請(qǐng) 求發(fā)送至所述服務(wù)器進(jìn)行處理之后還包括當(dāng)還有客戶端發(fā)送的請(qǐng)求時(shí),重復(fù)執(zhí)行步驟A 步驟E直至處理完所有請(qǐng)求。
8.一種實(shí)現(xiàn)負(fù)載均衡的系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端管理模塊、負(fù)載均衡模 塊和服務(wù)器管理模塊,其中所述客戶端管理模塊,用于接收客戶端發(fā)送的請(qǐng)求,將所述請(qǐng)求發(fā)送給服務(wù)器管理模 塊接收到服務(wù)器管理模塊反饋的與客戶端建立連接的服務(wù)器負(fù)載過(guò)重信息時(shí),釋放客戶 端與所述服務(wù)器的連接并啟動(dòng)負(fù)載均衡模塊,建立客戶端與所述負(fù)載均衡模塊所選服務(wù)器 的連接;負(fù)載均衡模塊,用于選擇負(fù)載較輕的服務(wù)器并所述服務(wù)器的標(biāo)識(shí)信息反饋給客戶端管 理模塊;服務(wù)器管理模塊,用于接收客戶端管理模塊發(fā)送的請(qǐng)求,判斷所述上下文變量是否為 真,如果是,則將所述請(qǐng)求發(fā)送至與所述客戶端連接的服務(wù)器進(jìn)行處理,否則判斷與所述客 戶端連接的服務(wù)器負(fù)載是否過(guò)重;當(dāng)所述服務(wù)器負(fù)載過(guò)重時(shí),則將負(fù)載過(guò)重信息反饋給客 戶端管理模塊,當(dāng)所述服務(wù)器負(fù)載沒(méi)有過(guò)重時(shí),將所述請(qǐng)求發(fā)送至所述服務(wù)器進(jìn)行處理。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述負(fù)載均衡模塊還用于將已啟動(dòng)的服 務(wù)器以及所述服務(wù)器的服務(wù)狀態(tài)和負(fù)載狀態(tài)記錄在注冊(cè)表,所述注冊(cè)表為所述負(fù)載均衡模 塊中的內(nèi)存單元;則,所述服務(wù)器管理模塊還用于監(jiān)測(cè)所述記錄的服務(wù)器的服務(wù)狀態(tài)和負(fù)載狀態(tài)并反饋給 負(fù)載均衡模塊。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述負(fù)載均衡模塊還用于根據(jù)記錄的所 有服務(wù)器的負(fù)載計(jì)算平均負(fù)載,則,所述服務(wù)器管理模塊判斷服務(wù)器是否過(guò)重,具體為判斷與所述客戶端連接的服務(wù)器 負(fù)載是否大于系統(tǒng)第一預(yù)設(shè)值且所述服務(wù)器負(fù)載相對(duì)于所述平均負(fù)載的百分比是否大于 系統(tǒng)第二預(yù)設(shè)值,如果是,則將負(fù)載過(guò)重信息反饋給客戶端管理模塊,如果否,則指示所述 服務(wù)器執(zhí)行所述請(qǐng)求。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述服務(wù)器管理模塊還用于接收服務(wù)器 處理請(qǐng)求失敗信息,并將所述信息反饋給客戶端管理模塊;則,所述客戶端管理模塊還用于接收到處理請(qǐng)求失敗信息時(shí),釋放客戶端與所述服務(wù)器的 連接并重新啟動(dòng)負(fù)載均衡模塊。
全文摘要
本發(fā)明提供了一種實(shí)現(xiàn)負(fù)載均衡的方法和系統(tǒng),所述方法包括接收客戶端發(fā)送的請(qǐng)求,所述請(qǐng)求包括上下文變量;判斷所述上下文變量是否為真,如果是,則將所述請(qǐng)求發(fā)送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理,否則判斷與所述客戶端建立連接的服務(wù)器負(fù)載是否過(guò)重,如果是,則釋放客戶端與所述服務(wù)器的連接,選擇負(fù)載較輕的服務(wù)器,并建立客戶端與所選服務(wù)器的連接,否則將所述請(qǐng)求發(fā)送至與所述客戶端建立連接的服務(wù)器進(jìn)行處理通過(guò)本發(fā)明實(shí)施例,避免了客戶端發(fā)送的請(qǐng)求為上下文相關(guān)的請(qǐng)求時(shí),由于切換服務(wù)器連接而出現(xiàn)的錯(cuò)誤,同時(shí)保障了服務(wù)器的負(fù)載均衡,提高了負(fù)載均衡的可靠性。
文檔編號(hào)H04L29/08GK102143075SQ20111007540
公開(kāi)日2011年8月3日 申請(qǐng)日期2011年3月28日 優(yōu)先權(quán)日2011年3月28日
發(fā)明者吳泉源, 周斌, 楊樹(shù)強(qiáng), 滕猛, 王凱, 王懷民, 羅榮凌, 舒琦, 賈焰, 趙輝, 金松昌, 陳志坤, 韓偉紅 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1