999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

EJB集群系統(tǒng)動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)

2008-12-31 00:00:00王露珊郭跟成

摘 要:分析了幾種常用的動(dòng)態(tài)負(fù)載均衡算法的不足,并針對(duì)目前大多數(shù)主流J2EE應(yīng)用服務(wù)器的負(fù)載均衡并不具有動(dòng)態(tài)自適應(yīng)性的問題,利用開源JBoss服務(wù)器為開發(fā)平臺(tái),結(jié)合多種設(shè)計(jì)模式設(shè)計(jì)了一種動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)模型,具體實(shí)現(xiàn)細(xì)節(jié)圍繞負(fù)載定義、負(fù)載收集以及均衡算法。提出了基于更新時(shí)間項(xiàng)的交替負(fù)載收集方式,并在此基礎(chǔ)上實(shí)現(xiàn)了一種基于前K子集相對(duì)負(fù)載均衡度的動(dòng)態(tài)自適應(yīng)算法。測(cè)試結(jié)果表明該算法能較好地均衡系統(tǒng)的負(fù)載。

關(guān)鍵詞:EJB集群;負(fù)載均衡;動(dòng)態(tài)自適應(yīng);負(fù)載指標(biāo);負(fù)載收集

中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1001-3695(2008)07-2064-04

Design and implementation on selfadaptive dynamicload balance services in EJB cluster system

LIU Yong,WANG Lushan,GUO Gencheng

(College of Electronic Information Engineering, Henan University of Science Technology, Luoyang Henan 471003, China)

Abstract:This paper presented the deficiencies of several common dynamic load balance algorithms and many of the main J2EE(Java 2 enterprise edition)application servers hadn’t selfadaptive dynamic load balance. Using the Open Source JBoss as the developing platform and some of design pattems, this paper designed a model of selfadaptive dynamic load balance services.Centring on load indexes, load collection and balance algorithms, this paper came up with a new idea of alternating load collection based on update_time attribute, and realized a selfadaptive dynamic algorithm of relative load balance degree based on first K subset. The test results show this algorithm can balance the system loads betterly.

Key words:EJB clustering;load balance;selfadaptive dynamic;load indexes;load collection

負(fù)載均衡服務(wù)是解決網(wǎng)絡(luò)擁塞和服務(wù)超載的重要途徑,影響因素諸多,很多論文都對(duì)其作出了相應(yīng)的討論,文獻(xiàn)[1~3]對(duì)負(fù)載指標(biāo)的定義進(jìn)行了研究,指明了負(fù)載指標(biāo)對(duì)負(fù)載均衡的重要意義;文獻(xiàn)[4]認(rèn)為動(dòng)態(tài)負(fù)載均衡的實(shí)際效果依賴于所選擇的負(fù)載分發(fā)策略、負(fù)載度量標(biāo)準(zhǔn)以及運(yùn)行時(shí)數(shù)據(jù)的獲取;文獻(xiàn)[5]從算法、網(wǎng)絡(luò)拓?fù)湟约熬饬6热矫娣治鰧?duì)動(dòng)態(tài)負(fù)載均衡的影響;文獻(xiàn)[6]對(duì)基于各種負(fù)載指標(biāo)的調(diào)度策略進(jìn)行性能對(duì)比,得出負(fù)載指標(biāo)的選擇和負(fù)載反饋的頻率對(duì)性能有很大影響等。

目前負(fù)載均衡算法已得到了廣泛的研究,分為靜態(tài)算法和動(dòng)態(tài)算法與靜態(tài)算法相比,動(dòng)態(tài)算法根據(jù)系統(tǒng)運(yùn)行時(shí)各個(gè)服務(wù)器負(fù)載狀態(tài)信息進(jìn)行動(dòng)態(tài)負(fù)載分配決策。研究表明,大多數(shù)情況下,動(dòng)態(tài)算法比靜態(tài)算法性能提高大約30%[7~9]。但大多數(shù)動(dòng)態(tài)算法是針對(duì)Web服務(wù)器集群,負(fù)載粒度粗,不支持組件(EJB)級(jí)細(xì)粒度的負(fù)載均衡。一些常用的動(dòng)態(tài)算法僅是考慮諸如服務(wù)器的請(qǐng)求連接數(shù)等,長(zhǎng)時(shí)間運(yùn)行后,效果不佳。

J2EE應(yīng)用服務(wù)器以其跨平臺(tái)、可移植等優(yōu)越性逐步在中間件市場(chǎng)上占據(jù)主導(dǎo)地位。與Web服務(wù)器集群不同,它是基于EJB組件的,負(fù)載粒度細(xì),體現(xiàn)了EJB組件的負(fù)載狀況。J2EE規(guī)范中尚未明確提出與負(fù)載均衡相關(guān)的公共服務(wù),不同的EJB服務(wù)器廠商對(duì)負(fù)載均衡的理解不同,實(shí)現(xiàn)方法也不同。另外,雖然大多數(shù)主流服務(wù)器聲稱實(shí)現(xiàn)了負(fù)載均衡服務(wù),但僅僅實(shí)現(xiàn)了幾種簡(jiǎn)單的靜態(tài)算法,如BEA Weblogic、開源JBoss等[10,11]僅支持RoundRobin、Weightbased、隨機(jī)等靜態(tài)算法。

本文給出了相關(guān)工作的背景和研究進(jìn)展,給出了一種動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)模型的總體結(jié)構(gòu)描述,介紹了模型的具體實(shí)現(xiàn),對(duì)提出的動(dòng)態(tài)自適應(yīng)均衡算法,采用客戶端動(dòng)態(tài)代理技術(shù),在開源JBoss應(yīng)用服務(wù)器上實(shí)現(xiàn)。

1 相關(guān)工作

1.1 開源JBoss應(yīng)用服務(wù)器的JXM架構(gòu)及其特性

JMX作為一個(gè)為應(yīng)用管理植入管理功能的架構(gòu),是一個(gè)優(yōu)秀的軟件集成工具,它為集成模塊化、容器、嵌入式組件提供了通用的方法,為應(yīng)用服務(wù)器的發(fā)展起了重要的作用。開源JBoss應(yīng)用服務(wù)器遵循國(guó)際最新的J2EE規(guī)范,最大成功之處就在于引入了JMX微內(nèi)核技術(shù),實(shí)現(xiàn)了高標(biāo)準(zhǔn)的模塊化和插件式設(shè)計(jì)思想。與其他流行的應(yīng)用服務(wù)器軟件相比,JBoss具有開源、易安裝、占用系統(tǒng)資源小、啟動(dòng)時(shí)間快等特性,并被譽(yù)為最佳Java應(yīng)用服務(wù)器。無論是學(xué)習(xí)還是應(yīng)用,JBoss應(yīng)用服務(wù)器都為用戶提供了一個(gè)優(yōu)秀的平臺(tái)。

1.2 開源JBoss應(yīng)用服務(wù)器中的負(fù)載均衡機(jī)制

1)JBoss中的集群架構(gòu) JBoss應(yīng)用服務(wù)器集群使用JavaGroups作為底層的組通信基礎(chǔ)設(shè)施,提供了可靠有序的組通信、組成員管理以及組內(nèi)RPC等特性,實(shí)現(xiàn)了集群服務(wù)(ClusterPartitionMBean),它是所有Clustered services的基礎(chǔ)。另外JBoss應(yīng)用服務(wù)器的集群服務(wù)通過HAPartition架構(gòu)[10],提供了分布式復(fù)件管理、分布式狀態(tài)服務(wù)以及高可用會(huì)話狀態(tài)等服務(wù),為遠(yuǎn)程對(duì)象(EJB組件)提供負(fù)載均衡機(jī)制成為了可能,所有的Clustered services都應(yīng)在HAPartition中進(jìn)行注冊(cè)。本文設(shè)計(jì)實(shí)現(xiàn)的動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)不僅與ClusterPartitionMBean有著依賴關(guān)系(圖1),而且也在HAPartition架構(gòu)中進(jìn)行注冊(cè)。

2)負(fù)載均衡點(diǎn) EJB集群的負(fù)載均衡策略可以發(fā)生在不同的位置,如客戶端代理、應(yīng)用服務(wù)器(HAJNDI命名服務(wù)器、EJB容器等)、硬件負(fù)載均衡器等。其中客戶代理維護(hù)了一組對(duì)象的引用,其內(nèi)封裝部署了相應(yīng)EJB或提供相應(yīng)服務(wù)(clustered services)的一組節(jié)點(diǎn)的地址,根據(jù)負(fù)載均衡算法選擇一個(gè)對(duì)象引用。與將應(yīng)用服務(wù)器或負(fù)載均衡器作為負(fù)載均衡策略發(fā)生的位置相比,采用客戶代理機(jī)制可以避免由負(fù)載均衡器作為轉(zhuǎn)發(fā)點(diǎn)引起的單點(diǎn)失效,同時(shí)也避免了由應(yīng)用服務(wù)器來管理負(fù)載均衡策略帶來的瓶頸問題。因此由客戶代理轉(zhuǎn)發(fā)請(qǐng)求成為J2EE平臺(tái)上最廣泛采用的實(shí)現(xiàn)機(jī)制。JBoss采用的就是基于客戶端代理的轉(zhuǎn)發(fā)機(jī)制。

3)JBoss中的負(fù)載均衡算法 JBoss應(yīng)用服務(wù)器實(shí)現(xiàn)的均衡算法有輪循(RoundRobin)算法、隨機(jī)(RandomRobin)算法、親和性(FirstAvailable)算法,在JBoss 4.x中引入了Proxy Family的概念,實(shí)現(xiàn)了FirstAvailableIdenticalAllProxies算法。這些算法都是簡(jiǎn)單的靜態(tài)算法,故此JBoss的負(fù)載均衡服務(wù)不能感知后端服務(wù)器的狀態(tài),不能根據(jù)系統(tǒng)負(fù)載信息進(jìn)行決策,而且沒有負(fù)載反饋,不具有自適應(yīng)控制能力[12]。總體來說負(fù)載均衡效率低。

1.3 常用動(dòng)態(tài)負(fù)載均衡算法

1)加權(quán)最少連接數(shù)(least connection) 設(shè)集群中節(jié)點(diǎn)服務(wù)器集合為S={S1,S2,…,Sn},W(Si)表示服務(wù)器Si的權(quán)值,C(Si)表示服務(wù)器Si的當(dāng)前連接度,所有服務(wù)器當(dāng)前的連接總數(shù)Csum=∑C(Si)(i=1,2,…,n),則按下式進(jìn)行選擇服務(wù)器k。其中:i=1,2,…,n;W(Sk)≠0。

[C(Sk)/Csum]/W(Sk)=minC(Si)/Csum/W(Si)

算法以連接數(shù)來衡量服務(wù)器負(fù)載,沒有考慮不同請(qǐng)求服務(wù)帶來的負(fù)載開銷差異,權(quán)重通常為靜態(tài)配置,不能很好地反映服務(wù)器運(yùn)行期的處理能力和EJB組件的運(yùn)行情況,在長(zhǎng)時(shí)間運(yùn)行下,導(dǎo)致負(fù)載的不均衡。

2)響應(yīng)速度(response time)算法 負(fù)載均衡器對(duì)集群服務(wù)器發(fā)出一個(gè)探測(cè)請(qǐng)求,根據(jù)各個(gè)服務(wù)器對(duì)探測(cè)請(qǐng)求的最快響應(yīng)時(shí)間進(jìn)行調(diào)度。僅僅是負(fù)載均衡器與服務(wù)器之間的最快響應(yīng)時(shí)間,不能體現(xiàn)客戶端與服務(wù)器端之間的響應(yīng)時(shí)間。

3)PickK算法 根據(jù)時(shí)間周期T更新集群服務(wù)器負(fù)載列表信息。當(dāng)請(qǐng)求到達(dá)時(shí),從N臺(tái)服務(wù)器中選擇任意的K臺(tái)服務(wù)器,根據(jù)負(fù)載列表比較它們的負(fù)載狀況,將請(qǐng)求發(fā)送給負(fù)載最小的服務(wù)器。算法不能保證選擇的K臺(tái)服務(wù)器是負(fù)載較輕者,有可能選擇的K臺(tái)服務(wù)器(部分或全部)正好是處于重負(fù)載情況。

4)基于負(fù)載遷移實(shí)現(xiàn)負(fù)載均衡的算法 通常將服務(wù)器劃分為輕載、重載和正常三種狀態(tài)。采用啟發(fā)策略尋找合適的節(jié)點(diǎn)進(jìn)行任務(wù)遷移,如西安交通大學(xué)提出的分組狀態(tài)驅(qū)動(dòng)自適應(yīng)算法。這類算法主要是通過負(fù)載遷移來實(shí)現(xiàn)均衡,計(jì)算量大,且移動(dòng)負(fù)載的收益有可能不能抵消通信、決策等產(chǎn)生的額外開銷,難免會(huì)產(chǎn)生進(jìn)行遷移后的響應(yīng)時(shí)間不能抵消負(fù)載遷移帶來的額外開銷問題,反而得不償失。

另外存在一些設(shè)計(jì)得非常復(fù)雜的均衡算法,但并不能得到很好的效果,因?yàn)橥ǔT綇?fù)雜的算法不僅帶來的計(jì)算開銷大,而且需要進(jìn)行大量的通信,使得性能提高大打折扣。

針對(duì)上述動(dòng)態(tài)負(fù)載均衡算法的不足,本文提出了一種基于前K子集的相對(duì)負(fù)載均衡度動(dòng)態(tài)自適應(yīng)算法。該算法在保證系統(tǒng)在長(zhǎng)時(shí)間運(yùn)行狀態(tài)下,各服務(wù)器的組件負(fù)載不發(fā)生較大的傾斜,以及能充分利用各個(gè)服務(wù)器處理能力的前提下,盡量減少負(fù)載計(jì)算以及通信帶來的額外開銷,并具有能根據(jù)系統(tǒng)運(yùn)行狀態(tài)自適應(yīng)調(diào)節(jié)服務(wù)器閾值的能力。

2 動(dòng)態(tài)自適應(yīng)性負(fù)載均衡服務(wù)模型設(shè)計(jì)

本模型設(shè)計(jì)是基于JBoss平臺(tái)及其JXM微內(nèi)核架構(gòu)開發(fā)的。根據(jù)JBoss服務(wù)器及EJB容器的模塊化、插件式設(shè)計(jì)結(jié)構(gòu)的特點(diǎn),將動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)以管理構(gòu)件MBean的形式裝載到JBoss服務(wù)器,并與其他服務(wù)組件(如EJB容器組件、部署服務(wù)以及集群服務(wù)等)相互依賴。依賴關(guān)系如圖1所示。

為實(shí)現(xiàn)負(fù)載均衡服務(wù)的透明性,依據(jù)JBoss應(yīng)用服務(wù)器允許服務(wù)以攔截器(interceptor)的方式加入容器,模型采用interceptor設(shè)計(jì)模式[13]和component configurator設(shè)計(jì)模式[13]實(shí)現(xiàn)動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)。模型分為三個(gè)功能,即負(fù)載收集(HALoadCollectionMBean)、負(fù)載分析(LoadAnalyzerMBean)和負(fù)載決策(LoadLocator)。其中負(fù)載收集和負(fù)載分析分別以可管理構(gòu)件MBean服務(wù)的形式注冊(cè)到MBeanServer中。當(dāng)EJB容器啟動(dòng)時(shí),同時(shí)啟動(dòng)它所依賴的負(fù)載均衡服務(wù)。另外負(fù)載收集服務(wù)作為Clustered services注冊(cè)在集群架構(gòu)HAPartition中,使得它能夠利用集群服務(wù)的功能,并通過在集群組內(nèi)發(fā)出組播,完成向本地和其他遠(yuǎn)程可用服務(wù)器負(fù)載收集的任務(wù)。當(dāng)EJB組件部署(deployment)時(shí),動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)被component configurator設(shè)計(jì)模式在EJB配置文件中以攔截器的形式加載到EJB容器中,即component configurator(圖1中DeploymentMBean服務(wù))讀取EJB的配置文件,然后將load balancing interceptors(LoadLocator、LoadAnalyzer、HALoadColletion等)加載到EJB容器中。當(dāng)接收到函數(shù)調(diào)用事件時(shí),自動(dòng)地按照裝載順序觸發(fā)相應(yīng)的這些服務(wù)。當(dāng)Web應(yīng)用服務(wù)器在連接到客戶請(qǐng)求事件時(shí),EJB容器觸發(fā)攔截器鏈的調(diào)用。其中l(wèi)oad balancing interceptors透明地將請(qǐng)求轉(zhuǎn)發(fā)給各自相應(yīng)的負(fù)載均衡服務(wù),并將處理結(jié)果作為下一個(gè)攔截器的參數(shù)。LoadLocator首先判斷是否為本地調(diào)用優(yōu)先,若不是,則將負(fù)載分析結(jié)果以及負(fù)載均衡策略以例外形式返回給客戶端代理(smart stub采用客戶代理轉(zhuǎn)發(fā)機(jī)制),代理捕獲這個(gè)例外后,根據(jù)負(fù)載均衡算法以及候選列表重定向新的EJB服務(wù)器,最后完成EJB實(shí)例的方法;如果是,則返回調(diào)用結(jié)果時(shí)LoadLocator負(fù)責(zé)獲得當(dāng)前可用的集群視圖,并作為結(jié)果的一部分返回客戶。這樣的設(shè)計(jì)模式使得無須更改服務(wù)器代碼,負(fù)載均衡服務(wù)能夠透明地將客戶請(qǐng)求轉(zhuǎn)發(fā),運(yùn)行期間能動(dòng)態(tài)地、透明地添加攔截器。

動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)模型設(shè)計(jì)的框架如圖2所示。

3 動(dòng)態(tài)負(fù)載均衡服務(wù)的實(shí)現(xiàn)

3.1 負(fù)載指標(biāo)的定義

要選擇一個(gè)負(fù)載指標(biāo),應(yīng)根據(jù)具體的應(yīng)用環(huán)境進(jìn)行多方面考慮:諸如選擇的負(fù)載指標(biāo)能否準(zhǔn)確地表達(dá)當(dāng)前節(jié)點(diǎn)的負(fù)載,以及收集、處理這些信息所增加的開銷等。本文根據(jù)EJB應(yīng)用集群的特點(diǎn),定義復(fù)合型負(fù)載指標(biāo)。首先為體現(xiàn)EJB組件的負(fù)載,通過定義的BeanState接口,實(shí)現(xiàn)對(duì)各種類型EJB組件生命周期各個(gè)階段負(fù)載量的檢測(cè),并將獲得的狀態(tài)信息作為有效的負(fù)載依據(jù)。因此對(duì)EJB組件的負(fù)載定義有如下兩個(gè)向量:

a)BeanCount(i)=[SL(i),SF(i),E(i),M(i)]。對(duì)于不同的應(yīng)用,不同類型的EJB使用情況不盡相同,即在EJB生命周期的各個(gè)階段,各個(gè)服務(wù)器實(shí)例上不同類型的EJB的創(chuàng)建、消亡、鈍化以及激活數(shù)量不同,因此定義了向量a)。其中的元素分別代表運(yùn)行時(shí)無狀態(tài)會(huì)話bean、有狀態(tài)會(huì)話bean、實(shí)體bean、消息驅(qū)動(dòng)bean在服務(wù)器i上的使用負(fù)載量。

b)BeanRight(i)=[k1,k2,k3,k4]。因?yàn)椴煌愋偷腅JB使用資源不同,如實(shí)體bean需要使用JDBC連接數(shù)據(jù)庫(kù)資源,相對(duì)于資源引用少的無狀態(tài)會(huì)話bean來說,它對(duì)系統(tǒng)的負(fù)載消耗大得多,所以引入向量b)。其中k1、k2、k3、k4分別代表服務(wù)器i對(duì)特定應(yīng)用下的無狀態(tài)會(huì)話bean、有狀態(tài)會(huì)話bean、實(shí)體bean、消息驅(qū)動(dòng)bean的負(fù)載權(quán)重。權(quán)重值與特定的應(yīng)用以及各個(gè)服務(wù)器的性能有關(guān)。本文利用component configuration模式,開發(fā)者可以根據(jù)具體情況在XML配置文件中設(shè)定權(quán)值,允許修正,增大了靈活性,而不是固化在代碼中。例如,向量BeanRight(i)=[1,1,2,0]表示在服務(wù)器i運(yùn)行的某一個(gè)應(yīng)用中,一個(gè)實(shí)體bean的調(diào)用開銷是一個(gè)會(huì)話bean調(diào)用開銷的2倍,向量中的0代表沒有用到消息bean。

由上述兩個(gè)向量可得服務(wù)器i上EJB組件的負(fù)載為BeanLoad(i)=BeanCount(i)* BeanRight(i)T。另外不能忽視服務(wù)器的JVM。其中JVM的堆內(nèi)存大小服務(wù)器性能調(diào)優(yōu)的重要指標(biāo),也作為本模型實(shí)現(xiàn)的負(fù)載指標(biāo)之一。則本文定義的負(fù)載為L(zhǎng)oad(i)=αBeanLoad(i)+βJVM(i)。其中α、β分別為權(quán)重(α>β)。將運(yùn)行時(shí)刻各種類型EJB組件的生命周期狀態(tài)作為負(fù)載指標(biāo)的內(nèi)容,更能體現(xiàn)EJB容器的負(fù)載情況,并結(jié)合JVM運(yùn)行時(shí)的狀態(tài),更能體現(xiàn)服務(wù)器的資源利用率。

3.2 基于更新時(shí)間項(xiàng)(update_time)負(fù)載信息交替收集方式

負(fù)載收集最重要的是試圖平衡收集系統(tǒng)負(fù)載信息的開銷(計(jì)算及通信開銷)和保持系統(tǒng)負(fù)載信息的精確度。本文對(duì)常見的三種收集方式的利弊進(jìn)行了分析。

1)周期性收集方式 其精確度以及通信開銷與時(shí)間周期T相關(guān),如T值越小,負(fù)載信息越精確,但相應(yīng)的通信開銷越大。另外,即使當(dāng)時(shí)不需要負(fù)載數(shù)據(jù),也要進(jìn)行信息收集。

2)請(qǐng)求到達(dá)收集方式 該方式的負(fù)載信息收集精確,當(dāng)請(qǐng)求到達(dá)率小時(shí),有利于減少消息通信的次數(shù),降低額外開銷,但當(dāng)請(qǐng)求率頻繁時(shí),則情況糟糕。另外延長(zhǎng)了請(qǐng)求的響應(yīng)時(shí)間。 

3)狀態(tài)變化收集方式 能精確地反映實(shí)例的當(dāng)前負(fù)載值,但當(dāng)客戶請(qǐng)求的到達(dá)頻率小而服務(wù)器節(jié)點(diǎn)的負(fù)載變化頻率大時(shí),系統(tǒng)會(huì)產(chǎn)生大量額外的通信開銷,容易產(chǎn)生負(fù)載成群現(xiàn)象[14];另外,由于保持一個(gè)全局的狀態(tài)信息表是一個(gè)很大的開銷,在大型系統(tǒng)中實(shí)現(xiàn)并不現(xiàn)實(shí)。

文獻(xiàn)[6]的測(cè)試結(jié)果說明,負(fù)載反饋頻率不是越高越好,也不是越低越好,而是根據(jù)不同的策略在一個(gè)合適的點(diǎn)時(shí)表現(xiàn)更佳性能。所以,如何在減少系統(tǒng)開銷的同時(shí),又能得到精確的負(fù)載信息是本文的目標(biāo)。結(jié)合對(duì)上述收集方式的分析,筆者對(duì)時(shí)間周期和請(qǐng)求達(dá)到方式進(jìn)行改進(jìn),提出了一種基于更新時(shí)間項(xiàng)的交替收集方式:設(shè)時(shí)間周期為T,系數(shù)λ(0.5~0.8),current_time為當(dāng)前時(shí)間, update_time為上次服務(wù)器對(duì)全局進(jìn)行負(fù)載收集并對(duì)負(fù)載列表更新的時(shí)間,那么下次是否進(jìn)行全局負(fù)載收集根據(jù)時(shí)間條件來決定。分為如下兩種情況: 

a)當(dāng)客戶請(qǐng)求到達(dá)某服務(wù)器時(shí),若current_timeupdate_time <λT,則不再進(jìn)行全局負(fù)載收集,返回的仍是上次的負(fù)載列表信息;否則向集群發(fā)出組播,進(jìn)行全局負(fù)載信息收集。

b)同時(shí)啟動(dòng)周期驅(qū)動(dòng)方式,每隔時(shí)間周期T向負(fù)載收集服務(wù)發(fā)出通知,此時(shí)也要對(duì)更新時(shí)間項(xiàng)進(jìn)行判斷:若current_timeupdate_time <T,即在T內(nèi)收集過負(fù)載信息則不再進(jìn)行收集(注意在current_timeupdate_time >T未必收集負(fù)載,要結(jié)合a)決定,參見表1)。這樣保證了在客戶請(qǐng)求頻繁的情況下,縮短了請(qǐng)求的響應(yīng)時(shí)間,減少了系統(tǒng)額外的通信開銷,設(shè)置λ的取值在一定程度上仍可保證負(fù)載收集的精確度(見表1中精確度的比較);在客戶請(qǐng)求頻率變小的情況下,主要靠時(shí)間周期進(jìn)行收集。由于在本改進(jìn)方案中時(shí)間周期的取值較大,減少了負(fù)載收集的次數(shù),在一定程度上避免了即使不需要負(fù)載數(shù)據(jù)也要進(jìn)行收集的情況,減少了通信開銷。表1是本方案、基于時(shí)間周期以及請(qǐng)求到達(dá)負(fù)載收集方式的負(fù)載收集情況的對(duì)比。

表1設(shè)在初始時(shí)刻λT,某接收到客戶請(qǐng)求的服務(wù)器進(jìn)行了一次全局負(fù)載收集,在(λT,2λT)時(shí)間段客戶請(qǐng)求頻繁,請(qǐng)求到達(dá)收集方式進(jìn)行的負(fù)載收集次數(shù)最多。雖然負(fù)載信息精確,但響應(yīng)時(shí)間慢。在極端情況下,服務(wù)器會(huì)產(chǎn)生瓶頸,性能嚴(yán)重降低。(2λT ,3T+λT)時(shí)間段,客戶請(qǐng)求頻率小,尤其在(2λT,3T)時(shí)間段內(nèi)沒有客戶請(qǐng)求的情況下,基于時(shí)間周期驅(qū)動(dòng)方式會(huì)進(jìn)行多次沒有必要的負(fù)載收集,在一定程度上影響了服務(wù)器的性能。從表中可以看出,本方案的負(fù)載信息收集的次數(shù)、響應(yīng)時(shí)間及精確度是請(qǐng)求到達(dá)驅(qū)動(dòng)和周期驅(qū)動(dòng)的折中。

3.3 一種基于前K子集相對(duì)均衡度的動(dòng)態(tài)自適應(yīng)負(fù)載均衡算法的實(shí)現(xiàn)

本文采用策略(strategy)設(shè)計(jì)模式[15]實(shí)現(xiàn)了動(dòng)態(tài)負(fù)載均衡算法可替換模型,定義了一個(gè)動(dòng)態(tài)負(fù)載均衡算法的通用接口DynamicLoadBalancePolicy。每個(gè)實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡的算法都將實(shí)現(xiàn)該接口,使得可以根據(jù)具體應(yīng)用,用不同的負(fù)載分析技術(shù)和算法實(shí)現(xiàn),增加了靈活性。結(jié)構(gòu)如圖3所示。

圖3為一種基于前K子集相對(duì)均衡度(FirstKRelativeBalanceDegree)的動(dòng)態(tài)自適應(yīng)負(fù)載均衡算法實(shí)現(xiàn)了DynamicLoadBalancePolicy接口。算法描述如下:

設(shè)定每個(gè)服務(wù)器的正常負(fù)載值L(i)normal(即閾值),當(dāng)前的負(fù)載值L(i)current,節(jié)點(diǎn)i當(dāng)前負(fù)載相對(duì)于正常時(shí)負(fù)載的相對(duì)均衡度為E(i)=L(i)current/ L(i)normal。當(dāng)系統(tǒng)整體處于重載/輕載時(shí),各個(gè)服務(wù)器的重載/輕載度偏差度D(i)=1-E(i),當(dāng)前系統(tǒng)閾長(zhǎng)為α=ΣD(i)/N,并定義:

每個(gè)服務(wù)器節(jié)點(diǎn)都維持兩個(gè)列表(HashMap):重載節(jié)點(diǎn)列表HashMaph〈nodeName(i), E(i)〉和輕載節(jié)點(diǎn)列表HashMapl〈nodeName(i),E(i)〉。對(duì)兩個(gè)列表中的節(jié)點(diǎn)按照相對(duì)均衡度E(i)進(jìn)行優(yōu)先排序,E(i)值越低表明節(jié)點(diǎn)目前的負(fù)載越低,優(yōu)先級(jí)越高。每次選擇的不一定是節(jié)點(diǎn)負(fù)載最小者,而是從輕載列表中選擇前K個(gè)相對(duì)均衡度小的節(jié)點(diǎn)作為候選節(jié)點(diǎn)。在對(duì)候選節(jié)點(diǎn)選取時(shí)先判斷本地節(jié)點(diǎn)是否處于前K個(gè)節(jié)點(diǎn)之列,若是則設(shè)本地調(diào)用優(yōu)先,不再對(duì)候選節(jié)點(diǎn)進(jìn)行選擇;否則在這前K個(gè)候選節(jié)點(diǎn)中隨機(jī)選擇一個(gè)來處理當(dāng)前的請(qǐng)求。另外該算法會(huì)出現(xiàn)以下兩種情況:

a)若某時(shí)刻D(i)均小于0,即輕載節(jié)點(diǎn)列表為空,說明系統(tǒng)處于重載,則計(jì)算當(dāng)前系統(tǒng)閾長(zhǎng)α=ΣD(i)/N(<0),將每個(gè)服務(wù)器正常負(fù)載值設(shè)為(1-α)L(i)normal。

b)若某時(shí)刻D(i)均大于0,即重載節(jié)點(diǎn)列表為空,說明系統(tǒng)處于輕載,則計(jì)算當(dāng)前系統(tǒng)閾長(zhǎng)α=ΣD(i)/N(>0),將每個(gè)服務(wù)器正常負(fù)載值設(shè)為(1+α) L(i)normal。

α的值體現(xiàn)了系統(tǒng)輕重負(fù)載程度,通過動(dòng)態(tài)地調(diào)整系統(tǒng)閾長(zhǎng)以及各個(gè)服務(wù)器的閾值,使得負(fù)載均衡具有自適應(yīng)性,能更準(zhǔn)確地把握全局的負(fù)載情況。通過判斷本地節(jié)點(diǎn)是否處于前K個(gè)候選節(jié)點(diǎn),設(shè)置是否為本地優(yōu)先,以減少網(wǎng)絡(luò)傳輸和請(qǐng)求響應(yīng)時(shí)間。因?yàn)樨?fù)載均衡時(shí)發(fā)生在客戶端,將集群服務(wù)器按狀態(tài)劃分為兩個(gè)表可以減小客戶端與服務(wù)器端的數(shù)據(jù)傳輸量,即僅將輕負(fù)載節(jié)點(diǎn)列表下載到客戶端。另外本算法相對(duì)于算法PickK,保證了選擇的服務(wù)器是負(fù)載較輕者,又避免了負(fù)載成群現(xiàn)象。由于系統(tǒng)的均衡不是通過負(fù)載遷移實(shí)現(xiàn),計(jì)算和通信開銷要比需要進(jìn)行負(fù)載遷移來達(dá)到負(fù)載均衡的算法小很多。

4 實(shí)驗(yàn)結(jié)果分析

本文采用一個(gè)IT培訓(xùn)企業(yè)的教學(xué)管理系統(tǒng)作為測(cè)試對(duì)象,在三臺(tái)分別裝有相同版本JBoss-4.0.4.GA的計(jì)算機(jī)節(jié)點(diǎn)上,通過壓力測(cè)試工具(LoadRunner)模擬測(cè)試場(chǎng)景:共模擬200個(gè)用戶,從零個(gè)用戶開始,每隔10 s增加20個(gè)用戶,當(dāng)系統(tǒng)同時(shí)訪問用戶達(dá)到最大時(shí)繼續(xù)運(yùn)行2 min。將JBoss應(yīng)用服務(wù)器中的輪循算法、隨機(jī)算法與本文實(shí)現(xiàn)的基于前K子集相對(duì)均衡度的動(dòng)態(tài)自適應(yīng)負(fù)載均衡算法進(jìn)行測(cè)試分析。不同算法的性能數(shù)據(jù)如表2所示。從表中結(jié)果可以看出采用本方案的平均響應(yīng)時(shí)間最短,吞吐量最大;另外最大響應(yīng)時(shí)間和最小響應(yīng)時(shí)間最為接近(標(biāo)準(zhǔn)差越小),說明采用本方案后,系統(tǒng)中各個(gè)服務(wù)器節(jié)點(diǎn)的負(fù)載度相對(duì)較為均衡,偏差不大,以至于不會(huì)出現(xiàn)像隨機(jī)方案(最大響應(yīng)時(shí)間為2.583)中將請(qǐng)求分配到某一重載服務(wù)器,進(jìn)一步加重服務(wù)器負(fù)擔(dān),而輕載服務(wù)器得不到充分利用的情況。

5 結(jié)束語

并不存在一種最優(yōu)的負(fù)載均衡算法,應(yīng)根據(jù)具體應(yīng)用環(huán)境來選擇。本文對(duì)負(fù)載均衡服務(wù)提出了具有一定創(chuàng)新的想法,為開發(fā)人員在使用時(shí)多一份選擇。提出的根據(jù)時(shí)間條件進(jìn)行負(fù)載收集方式有助于減少不必要的負(fù)載收集,并在一定程度上保證了負(fù)載數(shù)據(jù)的精確度,并以此為基礎(chǔ),實(shí)現(xiàn)了FirstKRelativeBalanceDegree動(dòng)態(tài)自適應(yīng)負(fù)載均衡算法。實(shí)驗(yàn)表明該算法具有一定的可用性。今后的研究將是對(duì)該方案的進(jìn)一步改進(jìn),諸如能夠根據(jù)客戶端請(qǐng)求到達(dá)率自適應(yīng)地更改時(shí)間周期T的取值,使之更好地相互協(xié)作等,以及系統(tǒng)閾長(zhǎng)的取值定義,然后根據(jù)對(duì)比分析結(jié)果,進(jìn)一步優(yōu)化、完善EJB集群的動(dòng)態(tài)自適應(yīng)負(fù)載均衡服務(wù)。

參考文獻(xiàn):

[1]ZHANG Xiaodong,QU Yanxia,XIAO Li.Improving distributed workload performance by sharing both CPU and memory resources[C]//Proc of the 20th International Conference on Distributed Computing Systems.2000.

[2]BOZYIGIT M,MELHI M.Load balancing framework for distributed system[J].Computer System Science Engineering,1997,12(5):287-293.

[3] JU Jiubin,YANG Kun,XU Gaochao.Using resource utilization as load index in dynamic load balancing[J].Journal of Software,1996,7(4):238-243.

[4]BALASUBRAMANIAN J,SCHMIDT D C,DWDY L,et al.Evaluating the performance of middle load balancing strategies[C]//Proc ofthe 8th International IEEE Enterprise Distributed Object Computing Conference.2004.

[5]胡子昂,王立.算法、網(wǎng)絡(luò)拓?fù)浼罢{(diào)度頻率與動(dòng)態(tài)負(fù)載平衡的關(guān)系[J].計(jì)算機(jī)工程與科學(xué),2000,36(3):149151.

[6]ANDREOLINI M,COLAJANNI M,MORSELLI R.Performance study of dispatching algorthims in multitier Web architectures[J].SIGMETR ICS Performance Evaluation Review,2002,30(2):10-20.

[7]KAMEDA H,F(xiàn)ATHY E S,RYU I,et al.A performance comparison of dynamic vs static load balancing policies in a mainframepersonal computer network model[C]//Proc of IEEE CDC2000.Sydney,Australia:[s.n.],2000:14151420.

[8]唐丹,金海,張永坤.集群動(dòng)態(tài)負(fù)載平衡系統(tǒng)的性能評(píng)價(jià)[J].計(jì)算機(jī)學(xué)報(bào), 2004,27(6):808-810.

[9]KEREN A,BARAK A.Adaptive placement of parallel Java agents in a scalable computing cluster[C]//Proc of Workshop on Java for High Performance Network Computing.Palo Alto,CA:AMC Press,1998.

[10]LABOUREY S,BURKE B.JBOSS clustering[R].[S.l.]:JBOSS Group,2003:1218.

[11]BEA System Inc.Using WebLogic server clusters,version 8.1 Revised[K].2003.

[12]范國(guó)闖,鐘華,黃濤,等.Web應(yīng)用服務(wù)器研究綜述[J].軟件學(xué)報(bào),2003,14(10):17281739.

[13]SCHMIDT D C,STAL M,ROHNERT H,et al.Patternoriented software architecture:patterns for concurrency and distributed objects[M]. 2nd ed.New York:Wiley,2000.

[14]JACQMOT C,MILGROME.A systematic approach to load distribution strategies for distributed systems[C]//Proc of Decentralized and Distributed Systems.1993.

[15]GAMMA E,HELM R,JOHNSON R,et al.Design patterns:elements of reusable objectoriented software[M].Reading: AddisonWesley, 2002:223-325.

注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。”

主站蜘蛛池模板: 人人艹人人爽| 精品国产成人三级在线观看| 国产91色| 国产精品免费p区| 青青青草国产| 国产a v无码专区亚洲av| 日本人妻一区二区三区不卡影院| 欧美精品啪啪一区二区三区| 日韩福利在线视频| 国产美女在线观看| 亚洲欧州色色免费AV| 色精品视频| 91久久国产综合精品女同我| 九九视频免费看| 久久免费精品琪琪| 国产性精品| 中文字幕日韩久久综合影院| 久久精品国产999大香线焦| 国产日韩精品欧美一区灰| 国产成人综合在线视频| 日韩av在线直播| 亚洲IV视频免费在线光看| 在线观看亚洲国产| 欧美日本在线一区二区三区| 亚洲综合网在线观看| 美美女高清毛片视频免费观看| 老熟妇喷水一区二区三区| 日本欧美中文字幕精品亚洲| 久久亚洲国产最新网站| 亚洲天堂日韩av电影| 一区二区三区毛片无码| 亚洲欧洲日本在线| 国产欧美精品一区二区| 影音先锋亚洲无码| 亚洲欧美日韩色图| 久久久久亚洲av成人网人人软件 | 亚洲第一黄片大全| 久无码久无码av无码| 99久久精品国产综合婷婷| av在线5g无码天天| 国产天天射| 亚洲视频三级| 欧美曰批视频免费播放免费| 一本大道视频精品人妻| 成人在线视频一区| 国产精品视频第一专区| 精品少妇人妻一区二区| 国产精品视频第一专区| 毛片基地视频| 国产H片无码不卡在线视频| 亚洲一道AV无码午夜福利| 国产女人在线观看| 夜夜爽免费视频| 国产免费福利网站| 色婷婷亚洲综合五月| 不卡无码h在线观看| 亚洲国产午夜精华无码福利| 1024国产在线| 这里只有精品免费视频| 69综合网| 国产真实乱子伦视频播放| 一级毛片免费不卡在线| 五月天久久综合国产一区二区| 亚洲六月丁香六月婷婷蜜芽| 欧美第一页在线| 天天操天天噜| 精品国产成人三级在线观看| 欧美乱妇高清无乱码免费| 成人精品视频一区二区在线| 伦伦影院精品一区| 亚洲免费黄色网| 中文一区二区视频| 国产精品妖精视频| 国产区精品高清在线观看| a级毛片在线免费| 免费一级毛片| 综合色区亚洲熟妇在线| 久久网综合| 欧美日韩导航| 亚洲av成人无码网站在线观看| 99视频在线免费观看| 亚洲第一成网站|