專利名稱:用于應用服務器和基于交易的系統(tǒng)中的請求的集群隧道式傳遞的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及應用服務器、消息傳遞系統(tǒng)和基于交易的系統(tǒng),具體地說, 本發(fā)明涉及用于這些系統(tǒng)中的請求的集群隧道式傳遞的系統(tǒng)和方法。
背景技術(shù):
在典型的集群企業(yè)級應用服務器環(huán)境中,客戶端可以使用因特網(wǎng)互操作性 協(xié)議(Internet Interoperability Protocol, HOP )來訪問集群。圖1示出了這種集群 系統(tǒng)的例子。集群100包括許多服務器或者集群成員CI 102、 C2 104、 C3 106, 由指明服務器名稱或者地址的對象請求(IOR)和端口標識符來標識它們中的每 一個。客戶端108使用隧道式IIOP對集群作出IIOP請求110。問題是這僅僅當 客戶端直接與集群通訊而且不涉及代理時才工作。如果如圖1中所示牽扯到代 理114,則情況變得更加復雜作為硬件負載均衡器的代理不能將請求路由到特定服務器。它們只可以隨 機地選擇服務器然后使用http頭部信息中的某種形式的"粘性(stickness)"??蛻舳说募阂蕾囉诼酚傻教囟ǚ掌鞯哪芰?;代理通常執(zhí)行網(wǎng)絡地址轉(zhuǎn)換(NAT),要求集群成員(IOR)廣告代理的地 址而不是集群成員的實際外部地址。所以在圖1中所示的例子中,從C1到C3 的每個集群成員都具有不同的地址和端口 ,而代理只能夠?qū)⒁粋€地址和端口廣 告給客戶端;未署名小應用程序(unsigned applet)只能夠打開到可以被訪問的服務器的連接。為了在整個企業(yè)中提供有效的負載均衡和故障切換(failover),需要一種隧 道式IIOP客戶端通過其可以在集群環(huán)境中工作的機制。發(fā)明內(nèi)容根據(jù)本發(fā)明的實施方式,提供用于應用服務器和其他系統(tǒng)中的請求的集群 隧道式傳遞的系統(tǒng)和方法。該系統(tǒng)包括客戶端、具有多個成員的集群和代理。 集群不廣告其成員的內(nèi)部地址,這是因為客戶端可能試圖直接連接到該成員。 替代地,將客戶端配置成包括在其中設(shè)置有代理地址的隧道層。然后在客戶端 將集群成員的所廣告的地址設(shè)置在頭部中。在運行期間,客戶端如從前一樣連 接到代理,但是隨后使用其內(nèi)部信息以同適當?shù)募撼蓡T連接或者通訊。根據(jù)一種實施方式,客戶端設(shè)置甜餅(cookie)并且隨后將其發(fā)送到代理。代理使用 適當?shù)募撼蓡T信息重寫甜餅,并且使用該信息將請求隧道式傳遞至適當?shù)姆?務器。
圖l示出了不提供請求的集群隧道式傳遞的集群系統(tǒng)的例子; 圖2示出了根據(jù)本發(fā)明實施方式的、提供請求的集群隧道式傳遞的集群系 統(tǒng)的例子;和圖3示出了根據(jù)本發(fā)明實施方式的、用于處理請求的集群隧道式傳遞的過 程的流程圖。
具體實施方式
根據(jù)本發(fā)明的實施方式,提供用于在應用服務器和其他系統(tǒng)中的請求的集 群隧道式傳遞的系統(tǒng)和方法。該系統(tǒng)包括客戶端、具有多個成員的集群和代理。集群不廣告其成員的內(nèi)部地址,這是因為客戶端可能試圖直接連接到該成員。 替代地,將客戶端配置成包括在其中設(shè)置有代理地址的隧道層。然后在客戶端 將集群成員的所廣告的地址設(shè)置在頭部中。在運行期間,客戶端如從前一樣連 接到代理,但是隨后使用其內(nèi)部信息以同適當?shù)募撼蓡T進行連接或者通訊。 根據(jù)本發(fā)明的一種實施方式,客戶端設(shè)置甜餅并且隨后將其發(fā)送到代理。代理 用適當?shù)募撼蓡T信息重寫甜餅,并且使用該信息將請求隧道式傳遞至適當?shù)?服務器。作為硬件負載均衡器的代理的主要問題是它們不能將請求路由到特定服務器。它們只能隨機選擇服務器然后使用http頭部信息中某種形式的"粘性"??蛻舳思阂蕾囉诼酚傻教囟ǚ掌鞯哪芰?。此外,代理通常執(zhí)行網(wǎng)絡地址轉(zhuǎn)換(NAT),請求集群成員(IOR)廣告代理的地址而不是集群成員的實際外部地 址。而且,未署名的小應用程序只能夠打開到可以被訪問的服務器的連接。對 該問題存在有三種被建議的解決方案使用代理執(zhí)行客戶端指引的負載均衡和故障切換;執(zhí)行服務器側(cè)負載均衡和故障切換;以及使用經(jīng)由HTTP 400的故障切換來執(zhí)行客戶端負載均衡。發(fā)揮作用(acton)。大多數(shù)負載均衡器支持URL指引的負載均衡,所以對于隧 道客戶端可以將尋址信息嵌入在URL中,而且對于負載均衡器可以根據(jù)該嵌入 的信息來對請求進行路由。這樣具有附加的特性在應用服務器中不必需要插 件。替代地,在接收請求的網(wǎng)絡服務器或者負載均衡器中單獨地配置每個應用 服務器。在服務器和客戶端負載均衡兩者的情況下,當將請求發(fā)送到集群或者在集 群處接收到請求時,觸發(fā)對目標服務器的選擇。不假設(shè)代理維持有到特定主機 的連接,其僅僅對其已經(jīng)連接到的服務器做出重復地請求??梢詫⑵鹗颊埱箅S 機地路由到任何集群成員,但是該起始請求將承載用于該請求所試圖到達的服 務器的尋址信息。然后將該請求發(fā)送到正確的服務器。當請求被路由時,導致 代理連續(xù)發(fā)送請求到該服務器的適當對話信息影響了該請求。能夠以許多方式 承載尋址信息,包括重寫URL以編碼尋址信息。在這種實施方式中,根據(jù)目標服務器地址和斷 開信息來重寫隧道請求。例如,如果代理位于代理主機:80,并且集群成員位于集群1:7001,則可以將隧道請求寫為http:〃proxyhost:80/wls internal/cluster/7001/iiop 或者其根據(jù)應該如何準備該請求的具體實施方式
的變形。替代手段是將尋址信息添加在定制HTTP頭部。已經(jīng)提供了地址信息,則可以通過服務器側(cè)負載均衡或者客戶端負載均衡 執(zhí)行負載均衡和故障切換。在用服務器側(cè)負載均衡的情況下,將根據(jù)URL或者頭部中的集群信息將每 個成員配置到代理請求。因此,即使請求進行故障切換并且負載均衡器選擇新 主機,該請求還會終了于適當?shù)姆掌?。當將響應發(fā)送回客戶端時,其包含用 于目標服務器的適當甜餅。如果負載均衡器已經(jīng)訪問了服務器,則將正確地路 由隨后的請求。在用客戶端負載均衡的情況下,情形類似,但不是路由請求,而是服務器 產(chǎn)生HTTP400消息。如果負載均衡器知道該服務器,則其將進行相應地路由, 如果不是的話,客戶端將繼續(xù)重新嘗試直到其到達另一個服務器。在這個例子 中,服務器根本不需要代理,它們僅僅需要能夠為客戶端進行使用而設(shè)置適當 的甜餅信息。圖2示出了根據(jù)本發(fā)明的實施方式提供請求的集群隧道式傳遞的集群系統(tǒng) 的例子。如圖2中所示,如以前一樣,集群120包括許多集群成員或者服務器 122、 124、 126??蛻舳?28經(jīng)由代理130與集群進行通訊。每個集群成員發(fā)表用于該成員的諸如名稱和端口之類的特定尋址信息。但是,代理不能廣告服務 器的內(nèi)部地址,這是因為如果那么做客戶端就會連接到該服務器。替代地,在 客戶端的隧道層,僅僅設(shè)置代理的地址從而所有請求都去到該代理。將集群成 員的所廣告的地址和端口都設(shè)置在特殊頭部中??蛻舳税l(fā)送136甜餅134到代 理,其中甜餅指定目標IOR。當客戶端后來是利用代理地址連接138到代理時, 代理使用甜餅中的信息來正確定位服務器。在一個實施方式中,代理根據(jù)所指 定的集群成員的IOR重寫140地址,如甜餅中所指定的一樣。在故障切換的情況中,客戶端得到關(guān)于目的地服務器已經(jīng)出現(xiàn)故障的響應。 代理可以試圖將請求轉(zhuǎn)發(fā)給另一個服務器。在客戶端的隧道層將檢測到服務器 已經(jīng)改變了 ,而且隨后故障切換代碼將把客戶端再次經(jīng)由代理連接到另一個服 務器。圖3示出了根據(jù)本發(fā)明的實施方式用于對請求的集群隧道式傳遞進行處理的流程圖。如圖3中所示,在步驟150中,客戶端得到用于特定集群成員或者 其正在與之進行通訊的服務器的頭部信息。在步驟152種,客戶端利用這種信 息寫一個甜餅給代理。在步驟154中,代理從指定給該集群的客戶端接收請求。 在步驟156,代理使用甜餅中的信息以適當?shù)腎OR重寫請求。在步驟158,將請 求路由到適當?shù)募撼蓡T。可以根據(jù)本發(fā)明的教導使用傳統(tǒng)通用或者專門數(shù)字計算機方便地實施本發(fā) 明。軟件領(lǐng)域的普通技術(shù)人員可以看出,根據(jù)本公開的示教,本領(lǐng)域的程序員 可以容易地準備適當?shù)能浖幋a。在一些實施方式中,本發(fā)明包括計算機程序產(chǎn)品,其可以是其上/其中存儲 有可以被用于對計算機進行編程以執(zhí)行本發(fā)明的任何過程的指令的存儲介質(zhì) (媒體)。存儲介質(zhì)包括,但不限于包括軟盤、光盤、DVD、 CD-ROM、微型 驅(qū)動器和磁光盤的各種類型的盤、ROM、 RAM、 EPROM、 EEPROM、 DRAM、 VRAM、閃存器件、磁或者光卡、納米系統(tǒng)(包括分子存儲器IC)、或者適于存 儲指令和/和數(shù)據(jù)的任何類型的媒體和設(shè)備。已經(jīng)為了圖解和說明的目的提供了本發(fā)明的上述描述。但是其不試圖窮盡 或者限制本發(fā)明到所公開的精確形式。選擇和描述了這些實施方式以全面解釋 本發(fā)明的原理及其實際應用,從而使得本領(lǐng)域的普通技術(shù)人員能夠理解用于各由所附權(quán)利要求及其等效物限定本發(fā)明的范圍。
權(quán)利要求
1. 一種用于利用代理的請求的集群隧道式傳遞的系統(tǒng),包括集群,包括多個集群成員;代理,用于從客戶端接收請求并且將請求路由到所述集群中的成員;和其中所述代理從客戶端接收甜餅,所述甜餅指定關(guān)于要被同所述客戶端一起使用的目的地集群成員的信息,然后所述代理根據(jù)所述信息路由來自所述客戶端的后續(xù)請求。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述集群成員廣告用于標識每個集 群成員的不同IOR。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中客戶端接收關(guān)于集群成員的所述IOR 信息并且使用該信息來創(chuàng)建甜餅。
4. 一種用于利用代理的請求的集群隧道式傳遞的方法,包括步驟 提供包括多個集群成員的集群;在代理處從客戶端接收指定關(guān)于要被與所述客戶端一同使用的目的地集群成員的信息的甜餅;和在代理處從客戶端接收后續(xù)請求,并且將這些請求路由到由所述信息所指定的所述集群中的成員。
5. 沖艮據(jù)權(quán)利要求4所述的方法,其中所述集群成員廣告用于標識每個集 群成員的不同IOR。
6. 根據(jù)權(quán)利要求5所述的方法,其中客戶端接收關(guān)于集群成員的所述IOR 信息,并且使用該信息來創(chuàng)建甜餅。
7. —種用于在客戶端和集群之間的請求的集群隧道式傳遞的代理,包括 用于從客戶端接收請求并且將請求路由到集群中的成員的代理;和其中所述代理從客戶端接收甜餅,所述甜餅指定關(guān)于要被同所述客戶端 一起使用的目的地集群成員的信息,然后所述代理根據(jù)所述信息路由來自所 述客戶端的后續(xù)請求。
8. 根據(jù)權(quán)利要求7所述的代理,其中所述集群成員廣告用于標識每個集 群成員的不同IOR。
9. 根據(jù)權(quán)利要求8所述的代理,其中代理使用甜餅來將客戶端請求映射 到所述IOR信息。
10. —種在客戶端和集群之間的請求的集群隧道式傳遞中使用的客戶端,包括隧道層,其接收關(guān)于集群成員的IOR信息并且使用該信息來創(chuàng)建隨后被 發(fā)送到代理的甜餅;和其中隧道層將請求經(jīng)由代理發(fā)送到集群成員。
全文摘要
提供了用于應用服務器和其他系統(tǒng)中的請求的集群隧道式傳遞的系統(tǒng)和方法。所述系統(tǒng)包括客戶端、具有多個成員的集群和代理。因為客戶端試圖直接連接到集群成員,所以集群不廣告其成員的內(nèi)部地址。替代地,客戶端被配置為包括其中設(shè)置有代理地址的隧道層。然后在客戶端處的頭部中設(shè)置集群成員的所廣告的地址。在運行期間,客戶端象從前一樣連接到代理,但是隨后使用其內(nèi)部信息來與代理進行連接和通訊,用適當?shù)募撼蓡T信息重寫甜餅并且使用該信息來將請求隧道式傳遞至適當?shù)姆掌鳌?br>
文檔編號G06F15/16GK101273341SQ200580007388
公開日2008年9月24日 申請日期2005年5月18日 優(yōu)先權(quán)日2004年5月19日
發(fā)明者安德魯·派珀 申請人:Bea系統(tǒng)公司