面向j2ee的負(fù)載平衡技術(shù)_第1頁(yè)
面向j2ee的負(fù)載平衡技術(shù)_第2頁(yè)
面向j2ee的負(fù)載平衡技術(shù)_第3頁(yè)
面向j2ee的負(fù)載平衡技術(shù)_第4頁(yè)
面向j2ee的負(fù)載平衡技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

面向j2ee的負(fù)載平衡技術(shù)

1靈活性和高靈活性隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)軟件的伸縮性和可用性得到了越來(lái)越多的關(guān)注。負(fù)載平衡和容錯(cuò)是這兩個(gè)問(wèn)題的典型解決方案。隨著操作系統(tǒng)或網(wǎng)絡(luò)層負(fù)載平衡的廣泛應(yīng)用,支持負(fù)載平衡的中間件服務(wù)形式的問(wèn)題越來(lái)越普遍。與在操作系統(tǒng)或網(wǎng)絡(luò)層實(shí)現(xiàn)負(fù)載平衡相比,在中間件層實(shí)現(xiàn)負(fù)載平衡的優(yōu)勢(shì)在于它提供了很大的靈活性,這主要體現(xiàn)在應(yīng)用(負(fù)載)類型上。目前,j2ue和corba(基于應(yīng)用的負(fù)載平衡器)等主導(dǎo)中間件的技術(shù)提供了支持負(fù)載平衡的需求,并提供了各種負(fù)載平衡算法和負(fù)載計(jì)量標(biāo)準(zhǔn)的選擇。然而,傳統(tǒng)的實(shí)現(xiàn)僅支持單個(gè)負(fù)載平衡點(diǎn)和負(fù)載平衡粒度,并不能適應(yīng)不同的應(yīng)用環(huán)境。本文首先討論了j2e平臺(tái)上的負(fù)載平衡的一些問(wèn)題,分析了不同負(fù)載平衡策略的各自應(yīng)用,然后詳細(xì)描述了產(chǎn)品化應(yīng)用服務(wù)器apk阿什的實(shí)現(xiàn)。PKUAS是一種符合J2EE1.3規(guī)范的反射式構(gòu)件運(yùn)行支撐平臺(tái).PKUAS基于JMX實(shí)現(xiàn)了微內(nèi)核的體系結(jié)構(gòu),支持四類容器系統(tǒng)(無(wú)態(tài)會(huì)話容器、有態(tài)會(huì)話容器、實(shí)體容器和消息驅(qū)動(dòng)容器)與三種互操作協(xié)議(IIOP(InternetInter-OrbProtocol)、JRMP(JavaRemotemethodProtocol)與SOAP(SimpleObjectAccessProtocol)),并內(nèi)置了命名服務(wù)、安全服務(wù)、事務(wù)服務(wù)、日志服務(wù)、數(shù)據(jù)連接服務(wù)與集群服務(wù).2實(shí)現(xiàn)負(fù)載平衡的方案J2EE平臺(tái)以集群的形式同時(shí)為負(fù)載平衡與容錯(cuò)提供支持.J2EE集群由一組應(yīng)用服務(wù)器組成,透明地為客戶提供企業(yè)級(jí)服務(wù).集群又稱為組,這是因?yàn)榧阂话闶褂媒M通信進(jìn)行成員管理,并保持各節(jié)點(diǎn)狀態(tài)的同步.這里所說(shuō)的狀態(tài)既包括實(shí)現(xiàn)負(fù)載平衡需要的對(duì)象(引用)的副本,也包括實(shí)現(xiàn)容錯(cuò)所需的會(huì)話狀態(tài)等.為支持企業(yè)級(jí)計(jì)算,J2EE平臺(tái)采用了分層的體系結(jié)構(gòu).相應(yīng)的,可以在不同層上實(shí)現(xiàn)負(fù)載平衡:(1)Web層的負(fù)載平衡常見(jiàn)方案有:(a)DNS輪循法,即由DNS服務(wù)器維護(hù)域名與一組(集群內(nèi)節(jié)點(diǎn)的)IP地址的映射,對(duì)于每一個(gè)域名解析請(qǐng)求,DNS服務(wù)器依次選擇列表中的下一個(gè)IP地址返回;(b)硬件負(fù)載均衡器法,即整個(gè)集群對(duì)外而言只有一個(gè)IP地址(即均衡器的地址),所有請(qǐng)求都發(fā)往該地址,由均衡器根據(jù)選定的負(fù)載平衡算法轉(zhuǎn)發(fā)請(qǐng)求;(c)Web服務(wù)器代理法,即由Web服務(wù)器(可以實(shí)現(xiàn)為HTTP服務(wù)器上的插件)或部署于其上的Web應(yīng)用實(shí)現(xiàn)對(duì)Servlet/JSP請(qǐng)求的負(fù)載平衡.(2)EJB(EnterpriseJavaBeans)層的負(fù)載平衡由J2EE應(yīng)用服務(wù)器通過(guò)增強(qiáng)命名服務(wù)與通信服務(wù)實(shí)現(xiàn)對(duì)EJB及公共服務(wù)(如JNDI(JavaNamingandDirectoryInterface)、JDBC(JavaDataBaseConnectivity)、JMS(JavaMessageService)等)的負(fù)載平衡.(3)數(shù)據(jù)層的負(fù)載平衡一些數(shù)據(jù)庫(kù)供應(yīng)商提供數(shù)據(jù)庫(kù)集群產(chǎn)品,支持不同數(shù)據(jù)庫(kù)服務(wù)器間的數(shù)據(jù)復(fù)制,透明(相對(duì)于使用數(shù)據(jù)庫(kù)的Web服務(wù)器與EJB服務(wù)器)地實(shí)現(xiàn)了JDBC連接在不同數(shù)據(jù)庫(kù)節(jié)點(diǎn)間的負(fù)載平衡.本文主要關(guān)注EJB層的負(fù)載平衡.2.1對(duì)象引用與執(zhí)行流程EJB層的負(fù)載平衡決策可以在不同位置做出,如負(fù)載均衡器、應(yīng)用服務(wù)器(JNDI命名服務(wù)器、容器等)以及客戶代理(homestub與remotestub)等.由負(fù)載均衡器轉(zhuǎn)發(fā)請(qǐng)求的方案(圖1)有明顯的缺陷.首先,為了避免單點(diǎn)失效與性能瓶頸,一般都使用幾個(gè)負(fù)載均衡器.然而即便如此,仍然不能避免所有均衡器均失效而導(dǎo)致系統(tǒng)癱瘓(即使服務(wù)節(jié)點(diǎn)仍可用)的情況.此外由于每次請(qǐng)求都需由均衡器轉(zhuǎn)發(fā),不可避免的會(huì)帶來(lái)性能開(kāi)銷.為了克服上述缺點(diǎn),本文提出了一種由命名服務(wù)實(shí)現(xiàn)負(fù)載平衡的方案(圖2).命名服務(wù)維護(hù)了JNDI名與一組對(duì)象引用(或客戶代理)的映射,在執(zhí)行查找請(qǐng)求時(shí)根據(jù)一定的負(fù)載平衡算法選擇一個(gè)特定于某個(gè)節(jié)點(diǎn)的對(duì)象引用返回給客戶.由于命名服務(wù)位于集群的每個(gè)節(jié)點(diǎn)上,一般不會(huì)出現(xiàn)上述的第一種情況.同時(shí)由于無(wú)需第三方轉(zhuǎn)發(fā)請(qǐng)求,因而降低了性能開(kāi)銷.當(dāng)然,由此帶來(lái)的一個(gè)問(wèn)題是僅能支持較粗粒度的負(fù)載平衡(見(jiàn)2.2節(jié)).這種方案的優(yōu)點(diǎn)是實(shí)現(xiàn)比較簡(jiǎn)單,運(yùn)行時(shí)刻開(kāi)銷小.此外,由于命名服務(wù)比較容易獲取全局信息(如各節(jié)點(diǎn)的負(fù)載狀況),因而易于實(shí)現(xiàn)動(dòng)態(tài)負(fù)載平衡算法.服務(wù)器端負(fù)載平衡還可由容器或通信服務(wù)中的接收器實(shí)現(xiàn),但這種做法進(jìn)一步加重了服務(wù)器的負(fù)擔(dān),一般很少采用.上述兩種方案的共同之處是由服務(wù)器實(shí)現(xiàn)負(fù)載平衡(負(fù)載均衡器也應(yīng)視為一種服務(wù)器),這意味著隨著客戶數(shù)量的增加,服務(wù)器用于負(fù)載平衡的開(kāi)銷也會(huì)相應(yīng)增加.對(duì)于以事務(wù)處理為主的應(yīng)用領(lǐng)域(如CORBA應(yīng)用),由于并發(fā)客戶數(shù)較少且客戶請(qǐng)求的處理時(shí)間較長(zhǎng)(因而負(fù)載平衡開(kāi)銷所占的比例較小),這類方案是合適的.而對(duì)于基于Web的應(yīng)用領(lǐng)域,常常需要面對(duì)大量客戶,并且所處理的多為交互式請(qǐng)求,則需要考慮降低服務(wù)器用于負(fù)載平衡的開(kāi)銷.正是由于上述原因,由客戶代理轉(zhuǎn)發(fā)請(qǐng)求(圖3)成為J2EE平臺(tái)上最廣泛采用的實(shí)現(xiàn)機(jī)制.客戶代理維護(hù)了一組對(duì)象引用,其內(nèi)封裝了部署了相應(yīng)EJB或提供相應(yīng)服務(wù)的一組節(jié)點(diǎn)的地址.每次方法調(diào)用中,客戶代理根據(jù)選定的負(fù)載平衡算法及其它信息(如各節(jié)點(diǎn)的負(fù)載)選擇一個(gè)對(duì)象引用,向相應(yīng)的節(jié)點(diǎn)發(fā)出請(qǐng)求.這種實(shí)現(xiàn)機(jī)制的優(yōu)點(diǎn)是(1)具有較好的可伸縮性.由于負(fù)載平衡開(kāi)銷主要由客戶負(fù)擔(dān),服務(wù)器無(wú)需考慮由于客戶數(shù)量增加引起的負(fù)載平衡開(kāi)銷的增加;(2)支持細(xì)粒度的負(fù)載平衡(見(jiàn)2.2小節(jié)).然而,客戶代理需要從服務(wù)器獲取必要的信息以及細(xì)粒度負(fù)載平衡都意味著運(yùn)行時(shí)刻開(kāi)銷的增加.此外,需要為每一種互操作協(xié)議開(kāi)發(fā)支持負(fù)載平衡的客戶代理也意味著實(shí)現(xiàn)難度的增加.考慮到2、3兩種方案各有特定的適用環(huán)境,PKUAS同時(shí)實(shí)現(xiàn)了兩種方案.本文將在第三部分詳細(xì)描述實(shí)現(xiàn)細(xì)節(jié).2.2ejb負(fù)載平衡粒度客戶使用EJB的一次典型流程如圖4所示.首先,客戶從命名服務(wù)查找home對(duì)象,得到其客戶代理(homestub).而后客戶通過(guò)homestub調(diào)用home對(duì)象的create方法,創(chuàng)建一個(gè)remote對(duì)象,得到remote對(duì)象的客戶代理(remotestub).最后客戶通過(guò)remotestub調(diào)用remote對(duì)象的某個(gè)方法,完成實(shí)際的業(yè)務(wù)操作.本文認(rèn)為,對(duì)于EJB而言存在以下三種負(fù)載平衡粒度:(1)查找級(jí)(perlookup)向一個(gè)home對(duì)象以及該home對(duì)象創(chuàng)建的所有remote對(duì)象發(fā)出的請(qǐng)求都由一個(gè)固定的節(jié)點(diǎn)處理,僅支持同一個(gè)EJB的不同home對(duì)象及不同EJB的負(fù)載平衡.其效果可由上述的命名服務(wù)轉(zhuǎn)發(fā)請(qǐng)求實(shí)現(xiàn),故名.(2)會(huì)話級(jí)(persession)向home對(duì)象發(fā)出的不同請(qǐng)求可以負(fù)載平衡,而向remote對(duì)象發(fā)出的請(qǐng)求則始終由創(chuàng)建該對(duì)象的節(jié)點(diǎn)處理.有態(tài)會(huì)話構(gòu)件一般只能做到這一級(jí),故名.(3)請(qǐng)求級(jí)(perrequest)home與remote對(duì)象的請(qǐng)求都可以負(fù)載平衡.一般只有無(wú)態(tài)會(huì)話構(gòu)件與只讀實(shí)體構(gòu)件能做到這一級(jí).盡管會(huì)話狀態(tài)復(fù)制為有態(tài)會(huì)話構(gòu)件的請(qǐng)求級(jí)負(fù)載平衡提供了支持,但是考慮到性能開(kāi)銷,在實(shí)際應(yīng)用中會(huì)話狀態(tài)復(fù)制一般僅用于需要支持容錯(cuò)的情況.從級(jí)別1到級(jí)別3,負(fù)載平衡粒度逐漸變細(xì).一般來(lái)說(shuō),粒度越細(xì),負(fù)載平衡效果越好,但運(yùn)行時(shí)開(kāi)銷也越大.2.1小節(jié)提到的方案2支持查找級(jí),方案3支持會(huì)話級(jí)與請(qǐng)求級(jí).本文將在第三部分描述這三種負(fù)載平衡粒度在PKUAS中的實(shí)現(xiàn)與定制方法.2.3動(dòng)態(tài)算法與靜態(tài)加權(quán)根據(jù)決策時(shí)是否使用運(yùn)行時(shí)刻的信息(如各節(jié)點(diǎn)的負(fù)載狀況),負(fù)載平衡算法可以分為靜態(tài)算法與動(dòng)態(tài)算法兩大類.靜態(tài)算法不使用運(yùn)行時(shí)刻的信息,常用的靜態(tài)算法有輪循、隨機(jī)及靜態(tài)加權(quán)算法等幾種.其中輪循與隨機(jī)算法適合于所有節(jié)點(diǎn)處理能力相當(dāng)?shù)那闆r.靜態(tài)加權(quán)算法適合于節(jié)點(diǎn)處理能力不同的情況.動(dòng)態(tài)算法也稱為適應(yīng)性算法,根據(jù)運(yùn)行時(shí)的系統(tǒng)狀態(tài)信息做出負(fù)載平衡決策.理論上,動(dòng)態(tài)算法具有更大的靈活性,其實(shí)際效果則依賴于所選擇的負(fù)載分發(fā)策略、負(fù)載度量標(biāo)準(zhǔn)以及運(yùn)行時(shí)數(shù)據(jù)的獲取.目前主流的J2EE應(yīng)用服務(wù)器一般只支持靜態(tài)算法,而CORBA產(chǎn)品則大都支持動(dòng)態(tài)算法.這同樣與兩類中間件主要面向不同類型的應(yīng)用有關(guān).目前,PKUAS僅支持三種靜態(tài)負(fù)載平衡算法,并且支持在運(yùn)行時(shí)刻替換缺省的負(fù)載平衡算法.3負(fù)載平衡機(jī)制在ppp的實(shí)現(xiàn)中的實(shí)現(xiàn)3.1pkuas負(fù)載平衡如前文所述,J2EE平臺(tái)上的負(fù)載平衡涉及到許多相關(guān)的策略(不同的負(fù)載平衡點(diǎn)、負(fù)載平衡粒度以及算法),這些策略各有其特定的適用環(huán)境.為了同時(shí)支持多種策略并允許客戶根據(jù)實(shí)際需要加以選擇,PKUAS實(shí)現(xiàn)了一個(gè)可靈活定制的負(fù)載平衡框架.PKUAS負(fù)載平衡建立在PKUAS互操作框架與JGroups提供的組通信服務(wù)之上.JGroups是基于Java的開(kāi)源組通信中間件,被廣泛運(yùn)用于各種J2EE平臺(tái)的開(kāi)源實(shí)現(xiàn)中.JGroups提供了可靠有序的組通信、組成員管理以及組內(nèi)RPC等特性.在此基礎(chǔ)之上,PKUAS實(shí)現(xiàn)了集群服務(wù)、全局命名服務(wù),并在針對(duì)IIOP互操作協(xié)議的客戶代理中增加了對(duì)負(fù)載平衡的支持,從而實(shí)現(xiàn)了上述的兩種方案.目前,PKUAS僅支持使用RMI/IIOP互操作協(xié)議的EJB的負(fù)載平衡.3.2基于rpc的集群攔截集群服務(wù)負(fù)責(zé)在PKUAS啟動(dòng)時(shí)加入組,監(jiān)聽(tīng)JGroups發(fā)出的消息以及進(jìn)行消息轉(zhuǎn)發(fā)等.集群服務(wù)允許其它服務(wù)注冊(cè)所關(guān)心的消息,并在收到消息時(shí)通知相應(yīng)服務(wù).其它服務(wù)可以通過(guò)集群服務(wù)發(fā)出組內(nèi)RPC調(diào)用,從而實(shí)現(xiàn)組內(nèi)節(jié)點(diǎn)的狀態(tài)同步.為了使EJB容器可以在方法調(diào)用前后對(duì)集群服務(wù)進(jìn)行必要的控制,在PKUAS現(xiàn)有的截取器鏈中增加了集群截取器.目前,集群截取器僅在調(diào)用返回前完成兩項(xiàng)工作:從集群服務(wù)獲得當(dāng)前視圖id,插入調(diào)用上下文中;對(duì)于返回remote對(duì)象的home方法,從構(gòu)件元數(shù)據(jù)獲取remote接口的負(fù)載平衡策略,并將其封裝為對(duì)象引用的一部分.3.3全局命名服務(wù)在PKUAS中,命名服務(wù)維護(hù)了JNDI名字與IOR(Inter-OperableobjectReference)(可互操作對(duì)象引用)的映射,而全局命名服務(wù)則維護(hù)了所有需要負(fù)載平衡的EJB(及RMI對(duì)象)的JNDI名字與一組IOR的映射.對(duì)于EJB,PKUAS會(huì)在應(yīng)用部署時(shí)刻為其生成home接口的IOR,并將IOR綁定到本地命名服務(wù)上,對(duì)于需要負(fù)載平衡的EJB則還會(huì)將其綁定到全局命名服務(wù)上.全局命名服務(wù)通過(guò)集群服務(wù)將名字信息組播到組內(nèi)其它節(jié)點(diǎn)上,以保持狀態(tài)同步.在查找過(guò)程中,如果全局命名服務(wù)在自身維護(hù)的綁定信息中找不到相應(yīng)的對(duì)象引用,則首先將請(qǐng)求轉(zhuǎn)發(fā)給本地命名服務(wù),如果仍然查找不到,則通過(guò)集群服務(wù)將請(qǐng)求轉(zhuǎn)發(fā)給組內(nèi)其它節(jié)點(diǎn)的全局命名服務(wù).當(dāng)?shù)弥硞€(gè)節(jié)點(diǎn)失效時(shí)(由集群服務(wù)通知),全局命名服務(wù)將屬于該節(jié)點(diǎn)的名字信息刪除.對(duì)于需要查找級(jí)負(fù)載平衡的構(gòu)件,全局命名服務(wù)在查找時(shí)根據(jù)一定的負(fù)載平衡算法選擇相應(yīng)的對(duì)象引用返回給客戶.對(duì)于需要會(huì)話級(jí)與請(qǐng)求級(jí)負(fù)載平衡的構(gòu)件,全局命名服務(wù)在查找時(shí)將對(duì)應(yīng)于JNDI名的一組僅含單個(gè)地址的IOR重組為一個(gè)含多個(gè)地址的IOR返回給客戶.3.4remotestbub實(shí)現(xiàn)PKUAS實(shí)現(xiàn)了開(kāi)放的互操作框架,自主開(kāi)發(fā)了符合IIOP規(guī)范的RMI-IIOP互操作協(xié)議.為了實(shí)現(xiàn)在IOR內(nèi)封裝多個(gè)節(jié)點(diǎn)的地址與端口號(hào),引入了標(biāo)準(zhǔn)IOR組件TAG-ALTERNATE-IIOP-ADDRESS.對(duì)于需要會(huì)話級(jí)與請(qǐng)求級(jí)負(fù)載平衡的構(gòu)件,全局命名服務(wù)返回一個(gè)包含此組件的IOR給客戶,保存在homestub中.Homestub在創(chuàng)建remote對(duì)象的方法中將自身維護(hù)的地址列表復(fù)制到remotestub中.為了實(shí)現(xiàn)2.2小節(jié)所述的各級(jí)負(fù)載平衡,stub需要對(duì)IOR中的地址列表進(jìn)行不同的處理.對(duì)于會(huì)話級(jí)負(fù)載平衡,homestub的每次方法調(diào)用可以選擇地址列表中的不同地址,remotestub則僅使用創(chuàng)建該對(duì)象的home方法所用的地址;對(duì)于請(qǐng)求級(jí)負(fù)載平衡,homestub與remotestub都可以使用不同的地址.為了實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā),stub必須獲得特定于該對(duì)象的負(fù)載平衡策略與其它相關(guān)信息,考慮到IIOP規(guī)范中并無(wú)相應(yīng)的標(biāo)準(zhǔn)組件,引入了自定義IOR組件TAG-LOADBALANCE-POLICY.其內(nèi)封裝了負(fù)載平衡粒度、算法、組成員視圖id以及各節(jié)點(diǎn)的靜態(tài)權(quán).負(fù)載平衡算法與各節(jié)點(diǎn)的靜態(tài)權(quán)分別來(lái)自部署描述文件與服務(wù)配置文件(見(jiàn)3.6小節(jié)).組成員視圖id從調(diào)用上下文獲得.當(dāng)stub發(fā)現(xiàn)當(dāng)前的視圖id與自身保存的id值不一致時(shí),將從全局命名服務(wù)獲取包含了最新節(jié)點(diǎn)地址列表的IOR,從而避免了不必要的容錯(cuò)開(kāi)銷.3.5驗(yàn)證認(rèn)證信息PKUAS安全服務(wù)支持“單次登錄”(SingleSignon):客戶在執(zhí)行首次EJB業(yè)務(wù)操作前,要到認(rèn)證服務(wù)器顯式登錄一次,認(rèn)證服務(wù)器為客戶分配一個(gè)令牌作為臨時(shí)身份憑證,并將該令牌加入自身維護(hù)的一個(gè)緩存中.以后客戶的每次請(qǐng)求都將攜帶該令牌,由安全截取器調(diào)用認(rèn)證服務(wù)檢查令牌的合法性.在集群環(huán)境中,由于客戶的每次請(qǐng)求可能由不同節(jié)點(diǎn)處理,為了保持“單次登錄”的特色,認(rèn)證信息需要在集群范圍內(nèi)共享.為此將認(rèn)證服務(wù)注冊(cè)到集群服務(wù)中,當(dāng)新的令牌加入緩存或原有令牌失效時(shí),通過(guò)組內(nèi)RPC維護(hù)各節(jié)點(diǎn)認(rèn)證信息的同步.具體來(lái)說(shuō),當(dāng)客戶在某個(gè)節(jié)點(diǎn)登錄后,該節(jié)點(diǎn)的認(rèn)證服務(wù)為客戶分配一個(gè)令牌并加入自身的緩存,同時(shí)通過(guò)組內(nèi)RPC將該令牌加入組內(nèi)其它節(jié)點(diǎn)的認(rèn)證服務(wù)緩存中.而后攜帶該令牌的客戶可以在組內(nèi)的任意節(jié)點(diǎn)上通過(guò)身份認(rèn)證,而無(wú)需重新登錄.3.6部署和關(guān)閉負(fù)載平衡服務(wù)PKUAS基于微內(nèi)核的體系結(jié)構(gòu)允許對(duì)服務(wù)進(jìn)行靈活定制.就負(fù)載平衡而言,用戶可以選擇使用或者不使用負(fù)載平衡,可以選擇不同的負(fù)載平衡粒度和負(fù)載平衡算法.目前,除缺省的負(fù)載平衡算法可以在運(yùn)行時(shí)刻設(shè)置外,其它配置工作需要在部署時(shí)刻完成.下文將依次加以說(shuō)明.管理員可以通過(guò)修改PKUAS的服務(wù)配置文件來(lái)啟動(dòng)或關(guān)閉負(fù)載平衡服務(wù).客戶可以通過(guò)使用不同的客戶代理(由代理生成器自動(dòng)生成)以及命名服務(wù)(本地或全局)以決定是否使用負(fù)載平衡服務(wù).部署人員可以在特定于應(yīng)用的部署描述文件中為每個(gè)EJB指定負(fù)載平衡策略,如圖5所示.其中負(fù)載平衡算法是可選允許管理員在運(yùn)行時(shí)刻對(duì)一些配置參數(shù)進(jìn)行調(diào)整.對(duì)集群服務(wù)而言,管理員可以從管理界面看到節(jié)點(diǎn)的靜態(tài)權(quán)、組名等信息,并可調(diào)整缺省負(fù)載平衡算法,從而使負(fù)載平衡服務(wù)對(duì)環(huán)境的變化具備一定的適應(yīng)性.3.7負(fù)載平衡機(jī)制的響應(yīng)時(shí)間節(jié)拍測(cè)試1與測(cè)試2評(píng)估了上述框架對(duì)單個(gè)節(jié)點(diǎn)的響應(yīng)時(shí)間產(chǎn)生的影響.測(cè)試環(huán)境如下:兩臺(tái)配置為P42.4G,512M內(nèi)存的DellPC,其中一臺(tái)作為服務(wù)器,安裝了RedHat9操作系統(tǒng),一臺(tái)作為客戶端,安裝了WindowsXP操作系統(tǒng).節(jié)點(diǎn)間通過(guò)100Mbps以太網(wǎng)聯(lián)接.測(cè)試用例是一個(gè)簡(jiǎn)單的無(wú)態(tài)會(huì)話EJB和一個(gè)standalone的Java客戶程序.該EJB接受客戶傳來(lái)的一個(gè)字符串,并將其直接返回給客戶.該EJB部署在單個(gè)服務(wù)節(jié)點(diǎn)上,home與remote接口都使用輪循算法.客戶程序依次向服務(wù)器發(fā)送不同字節(jié)數(shù)的字符串(各1萬(wàn)次,以避免測(cè)試結(jié)果的隨機(jī)性),并記錄響應(yīng)時(shí)間.三條曲線分別代表關(guān)閉負(fù)載平衡、命名服務(wù)轉(zhuǎn)發(fā)請(qǐng)求(查找級(jí))與客戶代理轉(zhuǎn)發(fā)請(qǐng)求(請(qǐng)求級(jí))三種情況.在測(cè)試1中,客戶僅在程序開(kāi)始運(yùn)行時(shí)調(diào)用JNDI命名服務(wù).在測(cè)試2中,客戶在每次調(diào)用前都進(jìn)行查找與創(chuàng)建工作.圖6與圖7分別給出了兩種情況下的測(cè)試結(jié)果.當(dāng)選擇命名服務(wù)作為負(fù)載平衡點(diǎn)時(shí),負(fù)載平衡機(jī)制引起的響應(yīng)時(shí)間開(kāi)銷僅存在于每次查找過(guò)程中,可以看到其影響是比較小的(對(duì)于一次查找、多次調(diào)用的情況幾乎可以忽略不計(jì)).當(dāng)選擇客戶代理作為負(fù)載平衡點(diǎn)時(shí),由于每次調(diào)用都需要運(yùn)行負(fù)載平衡算法分派請(qǐng)求,對(duì)響應(yīng)時(shí)間有一定影響.4webgos和webgists負(fù)載平衡當(dāng)前主流的應(yīng)用服務(wù)器都提供了對(duì)負(fù)載平衡的支持.考慮到J2EE應(yīng)用的特點(diǎn),大多數(shù)實(shí)現(xiàn)(如JBoss、JOnAS與WebLogic等)均選取客戶代理作為負(fù)載平衡點(diǎn).JBoss作為當(dāng)前最成功的開(kāi)源應(yīng)用服務(wù)器為負(fù)載平衡與容錯(cuò)提供了全面支持.JBoss集群使用JGroups作為底層的組通信基礎(chǔ)設(shè)施,實(shí)現(xiàn)了集群服務(wù)、高可用命名服務(wù)以及特定于JRMP互操作協(xié)議的客戶代理及相關(guān)設(shè)施.與PKUAS相比,JBoss負(fù)載平衡的優(yōu)點(diǎn)在于支持分布熱部署,即僅需在集群的一個(gè)節(jié)點(diǎn)上部署需要負(fù)載平衡的構(gòu)件,熱部署過(guò)程自動(dòng)將該構(gòu)件部署到集群的所有節(jié)點(diǎn)上.此外,JBoss3.2以上版本支持代理族(ProxyFamily).同一個(gè)EJB接口的位于同一個(gè)JVM內(nèi)的所有客戶代理組成一個(gè)代理族,可在其內(nèi)共享一些信息(如視圖id,地址列表等),從而使集群動(dòng)態(tài)變化時(shí)客戶代理的更新工作得以簡(jiǎn)化,并為某些特殊的負(fù)載平衡策略提供了支持.其不足之處在于,由于home與remote接口的客戶代理各自獨(dú)立地實(shí)施負(fù)載平衡算法,JBoss不能支持查找級(jí)與會(huì)話級(jí)負(fù)載平衡(有態(tài)會(huì)話構(gòu)件除外).此外,JBoss不支持運(yùn)行時(shí)刻修改缺省的負(fù)載平衡算法.作為當(dāng)前最成功的商業(yè)應(yīng)用服務(wù)器產(chǎn)品之一,WebLogic提供了功能更強(qiáng)大的集群服務(wù).與PKUAS相比,WebLogic除支持2.3小節(jié)所述的三

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論