• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向高并發(fā)民航業(yè)務(wù)的動(dòng)態(tài)負(fù)載均衡設(shè)計(jì)

      2016-11-08 08:33:30倪兆陽丁建立
      關(guān)鍵詞:均衡器實(shí)例集群

      田 豐 倪兆陽 丁建立 王 靜

      1(中國民航信息網(wǎng)絡(luò)股份有限公司研發(fā)中心 北京 100000)2(中國民航大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300000)

      ?

      面向高并發(fā)民航業(yè)務(wù)的動(dòng)態(tài)負(fù)載均衡設(shè)計(jì)

      田豐1倪兆陽2丁建立2王靜2

      1(中國民航信息網(wǎng)絡(luò)股份有限公司研發(fā)中心北京 100000)2(中國民航大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院天津 300000)

      針對民航業(yè)務(wù)實(shí)時(shí)并發(fā)請求多、業(yè)務(wù)功能復(fù)雜、數(shù)據(jù)量大的特點(diǎn),簡要介紹當(dāng)前業(yè)務(wù)系統(tǒng)的總體結(jié)構(gòu)和負(fù)載均衡機(jī)制,分析現(xiàn)有負(fù)載均衡算法的優(yōu)點(diǎn)和不足。為了提高民航業(yè)務(wù)系統(tǒng)的魯棒性和可靠性,根據(jù)其軟硬件結(jié)構(gòu)特點(diǎn)在原負(fù)載均衡機(jī)制的基礎(chǔ)上提出改進(jìn)的動(dòng)態(tài)負(fù)載均衡策略。同時(shí)設(shè)計(jì)維護(hù)負(fù)載度量指標(biāo)所需的數(shù)據(jù)結(jié)構(gòu)以及在這種數(shù)據(jù)結(jié)構(gòu)下維護(hù)該指標(biāo)的方法,并進(jìn)行實(shí)驗(yàn)對比驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,動(dòng)態(tài)負(fù)載均衡策略能夠更好地應(yīng)對高并發(fā)復(fù)雜網(wǎng)絡(luò)環(huán)境,使系統(tǒng)的魯棒性和可靠性得到提升。

      動(dòng)態(tài)負(fù)載均衡高并發(fā)民航分布式

      0 引 言

      隨著經(jīng)濟(jì)社會(huì)的發(fā)展,航空運(yùn)輸變得越來越普及。2014年中國民航旅客運(yùn)輸量已經(jīng)達(dá)到3.9億人次,排名世界第二?;ヂ?lián)網(wǎng)的迅猛發(fā)展也使越來越多的人從網(wǎng)絡(luò)渠道獲得關(guān)于航班的各種信息。以民航旅客服務(wù)信息系統(tǒng)中目前為止最大規(guī)模的服務(wù)器集群DIP(Data Integration Platform)來說,其吞吐量持續(xù)峰值已經(jīng)達(dá)到10 000 TPS,日處理消息量在2億條左右。這意味著越來越多的民航業(yè)務(wù)要由信息系統(tǒng)處理,系統(tǒng)負(fù)載量大幅增加。

      民航旅客服務(wù)信息系統(tǒng)的運(yùn)行狀況不僅僅關(guān)系到提供給地面用戶的服務(wù)質(zhì)量,還涉及到空中的交通安全和全國各航空公司的飛行計(jì)劃安排,一旦出現(xiàn)差錯(cuò)將造成大量的旅客滯留和航班延誤,其損失是不可估量的。這就要求民航旅客服務(wù)信息系統(tǒng)能夠良好地應(yīng)對高并發(fā)高負(fù)載環(huán)境。提高現(xiàn)有信息系統(tǒng)對高并發(fā)、動(dòng)態(tài)變化、連續(xù)高可靠性的適應(yīng)能力以及對其他需求的應(yīng)對能力成為當(dāng)前的重要任務(wù)。

      民航旅客服務(wù)信息系統(tǒng)屬于大規(guī)模分布式系統(tǒng)。在分布式環(huán)境下,系統(tǒng)中往往有多個(gè)處理能力各不相同的節(jié)點(diǎn),而且請求的到達(dá)以及請求的復(fù)雜性都是隨機(jī)的。如果一味地將請求全部分配給系統(tǒng)內(nèi)某一臺(tái)服務(wù)器,則不但會(huì)造成該服務(wù)器負(fù)擔(dān)過重容易崩潰而且也沒有充分利用系統(tǒng)資源[1]。單臺(tái)服務(wù)器處理能力的提高是有限度的,所以如何對請求進(jìn)行分流,實(shí)現(xiàn)靈活的負(fù)載均衡,從而達(dá)到對整個(gè)分布式系統(tǒng)高效利用的目的成了企業(yè)亟需解決的問題。

      1 負(fù)載均衡分類與現(xiàn)狀

      負(fù)載均衡大體上可以分為靜態(tài)負(fù)載均衡和動(dòng)態(tài)負(fù)載均衡兩大類[2]。

      靜態(tài)負(fù)載均衡通常以網(wǎng)絡(luò)流和啟發(fā)式算法為理論基礎(chǔ),依據(jù)分布式網(wǎng)絡(luò)中的靜態(tài)指標(biāo)來進(jìn)行請求分流。網(wǎng)絡(luò)流法是一種重要的計(jì)算機(jī)圖論方法,使用最大流最小割算法求解[3]。Stone研究了將計(jì)算開銷和服務(wù)器之間的通信開銷考慮在內(nèi)情況下的請求分流問題,使用最大流最小割算法給出了具有兩個(gè)處理器的系統(tǒng)中的最優(yōu)分配方案,但是沒有給出具有多個(gè)處理器情況下的解決方案[4]。Bokhari研究了雙處理器系統(tǒng)中的動(dòng)態(tài)分配模型,并對Stone的研究進(jìn)行了擴(kuò)展,使其能夠解決任務(wù)通信圖為樹形結(jié)構(gòu)的請求分流問題。Towsley又進(jìn)一步研究,將Bokhari的成果推廣到了串并聯(lián)通信圖結(jié)構(gòu)[5]。靜態(tài)負(fù)載均衡算法固然有其自身的優(yōu)勢,但是系統(tǒng)靜態(tài)指標(biāo)或歷史經(jīng)驗(yàn)數(shù)據(jù)不能動(dòng)態(tài)反映分布式系統(tǒng)負(fù)載情況的變化,所以靜態(tài)負(fù)載均衡不能根據(jù)實(shí)際情況動(dòng)態(tài)調(diào)整負(fù)載策略[6]。

      動(dòng)態(tài)負(fù)載均衡算法以服務(wù)器的實(shí)時(shí)負(fù)載狀態(tài)信息來決定任務(wù)的分配,其負(fù)載策略由當(dāng)前系統(tǒng)狀態(tài)決定[7]。研究者在近些年提出了許多動(dòng)態(tài)負(fù)載均衡算法,按照算法的控制位置特征這些算法大致可以分為分布式、集中式和混合/層次三類。分布式負(fù)載均衡算法的基本策略就是鄰近法,每一臺(tái)服務(wù)器與鄰近的服務(wù)器交換負(fù)載,并通過多次迭代達(dá)到全局負(fù)載均衡。比如Kolb等針對MapReduce可能產(chǎn)生的節(jié)點(diǎn)瓶頸問題提出了基于塊的負(fù)載均衡算法BlockSplit。集中式負(fù)載均衡算法中,處于邏輯上中心位置的節(jié)點(diǎn)收集所有其他節(jié)點(diǎn)的負(fù)載情況,根據(jù)全局的負(fù)載信息做出決策。比如GreedyLB算法在全局范圍選取一個(gè)當(dāng)前負(fù)載量最小的服務(wù)器,將負(fù)載分配給它。為了減小負(fù)載均衡算法的系統(tǒng)開銷,一些算法重點(diǎn)研究了如何根據(jù)服務(wù)器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)來構(gòu)建一個(gè)層次樹的問題。在此基礎(chǔ)上將服務(wù)器劃分為多個(gè)域,每一層在相鄰域之間進(jìn)行負(fù)載均衡,并且在層間執(zhí)行負(fù)載均衡,最后達(dá)到全局負(fù)載均衡的目的,這樣的負(fù)載均衡算法稱為混合/層次負(fù)載均衡算法。比如Wang等根據(jù)ZEUS網(wǎng)絡(luò)框架和云計(jì)算結(jié)構(gòu)特征,提出了一種具有三級層次拓?fù)浣Y(jié)構(gòu)的兩階段負(fù)載均衡算法[8]。通常情況下,動(dòng)態(tài)負(fù)載均衡相對于靜態(tài)負(fù)載均衡能夠有30%~40%的性能提升[9]。

      2 JCF總體結(jié)構(gòu)

      2.1整體結(jié)構(gòu)

      JCF(Java Core Framework)中間件平臺(tái)是民航旅客服務(wù)信息系統(tǒng)的重要組成部分,它運(yùn)行于分布式環(huán)境下,面對著不同的硬件平臺(tái)、操作系統(tǒng)和異構(gòu)的網(wǎng)絡(luò)環(huán)境。它通過適配服務(wù)的方式來解決JCF平臺(tái)內(nèi)部業(yè)務(wù)服務(wù)與現(xiàn)有企業(yè)服務(wù)總線對接的問題,以及通過企業(yè)服務(wù)總線訪問JCF平臺(tái)內(nèi)部業(yè)務(wù)服務(wù)時(shí)所需要的負(fù)載均衡、資源隔離、故障隔離等需求。

      JCF平臺(tái)由開發(fā)工具、運(yùn)行系統(tǒng)、管理工具三大部分組成,為業(yè)務(wù)服務(wù)的開發(fā)、部署、運(yùn)行和維護(hù)提供完整的支持。

      其中運(yùn)行系統(tǒng)的功能可以分為兩個(gè)層次,如圖1所示。

      圖1 JCF運(yùn)行系統(tǒng)層次

      服務(wù)層為應(yīng)用支撐框架,允許用戶使用Java語言創(chuàng)建核心業(yè)務(wù)邏輯,然后使用JCF提供的流程配置工具將核心業(yè)務(wù)邏輯編排成可以獨(dú)立部署和運(yùn)行的業(yè)務(wù)服務(wù)。平臺(tái)采用SEDA架構(gòu),其中每個(gè)服務(wù)為一個(gè)階段,每個(gè)階段含有一個(gè)資源控制器,根據(jù)本階段的負(fù)載情況動(dòng)態(tài)調(diào)整資源配置。階段之間的調(diào)用由JCF系統(tǒng)的服務(wù)調(diào)用平臺(tái)負(fù)責(zé)。

      調(diào)用層為分布式服務(wù)調(diào)用平臺(tái),為服務(wù)之間的相互調(diào)用提供基本支撐,包括SEDA 異步調(diào)用、負(fù)載均衡、故障隔離、自動(dòng)尋址等功能。對業(yè)務(wù)應(yīng)用的開發(fā)者來說它是“透明”的。

      2.2負(fù)載均衡機(jī)制

      JCF的負(fù)載均衡機(jī)制位于服務(wù)調(diào)用方的攔截器中,作為攔截鏈的一個(gè)Handler存在,叫做LoadBalanceHandler。LoadBalanceHandler從屬于服務(wù)調(diào)用者,調(diào)用負(fù)載均衡器LoadBalancer選擇服務(wù)實(shí)例。LoadBalancer是獨(dú)立于攔截器Handler而單獨(dú)存在的,是對負(fù)載均衡算法的抽象,如圖2所示。

      圖2 負(fù)載均衡器

      每一個(gè)LoadBalancer實(shí)例都是當(dāng)前服務(wù)器中的某一個(gè)被調(diào)用服務(wù)的負(fù)載均衡算法的抽象。其中主要的方法是chooseServer,用來選擇一個(gè)服務(wù)器處理當(dāng)前請求。ServiceInstance是對服務(wù)實(shí)例的抽象,其中封裝了服務(wù)實(shí)例所在服務(wù)器的主機(jī)地址和端口。ServerMetaInfo是用來描述服務(wù)器的對象。AbstractRule是所有負(fù)載均衡算法的抽象基類。ConsistentHashingRule是一致性哈希算法。WeightedRoundRobinRule、LeastPendingRequestRule是不同策略的隨機(jī)負(fù)載均衡算法。當(dāng)負(fù)載均衡邏輯選擇服務(wù)實(shí)例時(shí)拋出異常時(shí),根據(jù)指定的環(huán)境變量,決定中止調(diào)用并返回錯(cuò)誤信息,或者使用父類的隨機(jī)負(fù)載均衡算法RandomRule隨機(jī)選擇一個(gè)服務(wù)實(shí)例。

      負(fù)載均衡器是在客戶端的服務(wù)器,由于在一臺(tái)服務(wù)器上有可能存在多個(gè)服務(wù)作為某個(gè)服務(wù)的客戶端,因此需要建立一個(gè)被調(diào)用服務(wù)的唯一的負(fù)載均衡器。JCF平臺(tái)采用工廠模式創(chuàng)建負(fù)載均衡器,LoadBalancerFactory是負(fù)載均衡器的工廠類,便于擴(kuò)展新的負(fù)載均衡策略;LoadBalanceManager作為負(fù)載均衡器的管理者,負(fù)責(zé)保存服務(wù)器內(nèi)共享的唯一的負(fù)載均衡器,如圖3所示。

      圖3 負(fù)載均衡器的管理機(jī)制

      在當(dāng)前JCF平臺(tái)的固定比例因子負(fù)載均衡算法中,負(fù)載均衡的Handler通過LoadBalanceManager調(diào)用LoadBalanceFactory創(chuàng)建LoadBalancer的實(shí)例,并調(diào)用chooseServer()方法選擇接收請求的服務(wù)器。而在chooseServer()方法中依賴服務(wù)注冊庫維護(hù)的LoadFactorMap和LoadbalancerInfo按照固定比例因子算法選擇服務(wù)器。其中LoadBalanceInfo用來保存一個(gè)服務(wù)的固定比例因子的負(fù)載均衡信息,包括服務(wù)實(shí)例列表和根據(jù)比例因子計(jì)算出的最大值、最大公約數(shù)、輪轉(zhuǎn)周期、輪轉(zhuǎn)列表,以及表示輪轉(zhuǎn)列表當(dāng)前位置的的下標(biāo)。LoadFactorMap是維護(hù)服務(wù)注冊庫信息和LoadBalanceInfo的類,當(dāng)服務(wù)實(shí)例增加或減少時(shí),重新計(jì)算固定比例因子的輪轉(zhuǎn)列表,并設(shè)置到LoadBalanceInfo中。

      例如某個(gè)JCF域內(nèi)含有3臺(tái)JCF服務(wù)器,負(fù)載均衡因子分別設(shè)置為1、2、3。假設(shè)請求處理速度遠(yuǎn)遠(yuǎn)小于請求到達(dá)速度,當(dāng)有60個(gè)請求同時(shí)到達(dá)時(shí)這些請求將會(huì)以3∶2∶1 的比例被分配給域內(nèi)3臺(tái)服務(wù)器。

      該算法屬于靜態(tài)負(fù)載均衡算法,實(shí)現(xiàn)簡單且復(fù)雜度低,符合算法設(shè)計(jì)原則。但是其比例因子只能根據(jù)機(jī)器性能和以往經(jīng)驗(yàn)由人工設(shè)定,在運(yùn)行過程中不能根據(jù)負(fù)載情況的變化實(shí)時(shí)調(diào)整策略。如果運(yùn)行過程中某臺(tái)服務(wù)器負(fù)載過大,該狀況并不能為負(fù)載均衡算法所察覺,仍然會(huì)按照固定比例向其發(fā)送請求,而不能讓其他運(yùn)行狀況尚良好的服務(wù)器多分擔(dān)請求。所以該算法的靈活性欠佳,需要對其進(jìn)行改進(jìn)。

      3 動(dòng)態(tài)負(fù)載均衡設(shè)計(jì)

      為了改善負(fù)載均衡算法的靈活性,新的算法采用動(dòng)態(tài)負(fù)載均衡策略,以未完成請求數(shù)為負(fù)載度量指標(biāo),循環(huán)服務(wù)列表中的每一個(gè)服務(wù)實(shí)例,選擇未完成請求數(shù)最低的服務(wù)實(shí)例處理請求。

      3.1未完成請求數(shù)的維護(hù)

      國際民航系統(tǒng)間報(bào)文交互基于IATA所定義的國際規(guī)范,該規(guī)范分TYPE-A和TYPE-B兩種類型,其中TYPE-A屬于Request-Reply模式,TYPE-B屬于One-way模式。JCF平臺(tái)提供了基于這兩種模式的負(fù)載均衡機(jī)制。未完成請求數(shù)的維護(hù)方式取決于消息傳輸模式:

      1) 在One-way模式下,使用服務(wù)端的隊(duì)列深度。當(dāng)收到服務(wù)端的Signal信號時(shí),將相應(yīng)服務(wù)實(shí)例的指標(biāo)值更新為信號中攜帶的請求隊(duì)列深度。

      2) 在Request-Reply模式下,使用客戶端維護(hù)的指標(biāo)。當(dāng)負(fù)載均衡Handler選出服務(wù)器后,對該服務(wù)實(shí)例的未完成請求數(shù)加1;當(dāng)收到服務(wù)端的應(yīng)答消息時(shí),對相應(yīng)服務(wù)實(shí)例的未完成請求數(shù)減1;當(dāng)收到超時(shí)信號時(shí),由于同一個(gè)請求消息收到超時(shí)信號后就不會(huì)再收到應(yīng)答消息,所以對相應(yīng)服務(wù)實(shí)例的未完成請求數(shù)減1。

      在Request-Reply模式下客戶端需要按照一定的時(shí)間窗口進(jìn)行計(jì)數(shù)。只計(jì)算指定長度時(shí)間窗口內(nèi)的請求數(shù),在時(shí)間窗口內(nèi)分為不同的刻度分別統(tǒng)計(jì),每過一個(gè)刻度,就拋棄窗口外的計(jì)數(shù),這樣就完成了對超時(shí)請求數(shù)的拋棄。

      3.2未完成請求數(shù)的統(tǒng)計(jì)

      統(tǒng)計(jì)過去s個(gè)時(shí)間單位的未完成請求數(shù)的算法,可以表述為獲取當(dāng)前時(shí)間t以前s個(gè)時(shí)間單位(μ)的未完成請求數(shù)reqno之和:

      未完成請求數(shù)的統(tǒng)計(jì)需要使用一個(gè)適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),然后處理好三個(gè)問題:

      1) 當(dāng)請求發(fā)出時(shí),使未完成請求數(shù)加1;

      2) 當(dāng)應(yīng)答收到時(shí),使未完成請求數(shù)減1;

      3) 當(dāng)需要統(tǒng)計(jì)時(shí),統(tǒng)計(jì)出指定時(shí)間范圍內(nèi)的未完成請求數(shù)之和。

      3.3數(shù)據(jù)結(jié)構(gòu)

      在計(jì)算機(jī)中模擬這一統(tǒng)計(jì)過程只需關(guān)心s個(gè)時(shí)間單位內(nèi)的未完成請求數(shù),所以給每個(gè)服務(wù)實(shí)例定義一個(gè)包含s個(gè)結(jié)點(diǎn)的線性表。每個(gè)結(jié)點(diǎn)代表一個(gè)時(shí)間窗口,即一個(gè)時(shí)間單位,其中保存建立該結(jié)點(diǎn)時(shí)的時(shí)刻time以及一個(gè)時(shí)間單位內(nèi)的未完成請求數(shù)reqno(使用原子數(shù)據(jù)類型)。新的結(jié)點(diǎn)加在后面,當(dāng)加入新的結(jié)點(diǎn)時(shí),各結(jié)點(diǎn)依次前移,把時(shí)間最久遠(yuǎn)的結(jié)點(diǎn)拋棄,如圖4為一個(gè)s=5的數(shù)據(jù)結(jié)構(gòu)。

      圖4 數(shù)據(jù)結(jié)構(gòu)

      3.4增加未完成請求數(shù)

      假設(shè)采用結(jié)構(gòu)數(shù)組方式實(shí)現(xiàn)該數(shù)據(jù)結(jié)構(gòu),命名為cell。同時(shí)假設(shè)當(dāng)前時(shí)刻為t,如果t-cell[s-1].time<μ,則cell[s-1].reqno=cell[s-1].reqno+1。

      設(shè)μ=1,t=25.74時(shí),格子的內(nèi)容如下所示:

      判斷條件25.74-25<1成立,則cell[4].reqno=1+1=2。

      如果t-cell[s-1].time≥μ,則首先需要滑動(dòng)時(shí)間窗口,再進(jìn)行未完成請求數(shù)的累計(jì)。

      3.5滑動(dòng)時(shí)間窗口

      再按照t-cell[s-1].time<μ的情況進(jìn)行增加請求數(shù)操作,如下所示:

      3.6減少未完成請求數(shù)

      對于非血運(yùn)重建患者,基于多項(xiàng)臨床試驗(yàn)及薈萃分析[3-5]顯示:SCAD患者若無禁忌證,建議阿司匹林100mg/d長期治療,若不能耐受阿司匹林,建議服用氯吡格雷75mg/d或替格瑞洛 60mg 2次/d~90mg 2次/d;血栓高?;颊呷缧募」K啦∈非野橛?項(xiàng)危險(xiǎn)因素:年齡65歲以上、糖尿病、2次心肌梗死、多支病變、腎功能異常(肌酐清除率<60ml/min),且出血風(fēng)險(xiǎn)較低的患者可考慮采用阿司匹林聯(lián)合替格瑞洛(60mg 2次/d)長期治療,治療期間嚴(yán)密監(jiān)測出血。

      假設(shè)μ=1,t=27時(shí)窗口的內(nèi)容如下所示:

      3.7統(tǒng)計(jì)未完成請求數(shù)

      設(shè)當(dāng)前時(shí)間為t,如果t-cell[s-1].time<μ,那么只需要對當(dāng)前的數(shù)據(jù)結(jié)構(gòu)進(jìn)行累積:

      int acc = 0;

      for(int i = 0; i < s; i++) {

      acc += cell[i].reqno

      }

      如果t-cell[s-1].time≥μ,也就是說沒有最近一個(gè)時(shí)間單位的未完成請求數(shù),那么首先需要滑動(dòng)時(shí)間窗口,然后再按上述方式進(jìn)行統(tǒng)計(jì)。

      3.8負(fù)載均衡算法

      對上述未完成請求數(shù)維護(hù)方法進(jìn)行分析,發(fā)現(xiàn)不論是發(fā)出請求還是收到應(yīng)答均需要判斷是否需要滑動(dòng)時(shí)間窗口。如果滑動(dòng)了時(shí)間窗口,還需要對每個(gè)服務(wù)實(shí)例的總體未完成請求數(shù)進(jìn)行更新以提供負(fù)載均衡操作所需要的最新參考指標(biāo)。對各種操作歸納總結(jié),提煉出公共操作后繪制出算法流程如圖5所示。

      圖5 算法流程圖

      針對上述數(shù)據(jù)結(jié)構(gòu)特點(diǎn),分析負(fù)載均衡流程,設(shè)計(jì)出Request-Reply模式下的動(dòng)態(tài)負(fù)載均衡算法:

      a) 計(jì)算當(dāng)前時(shí)刻t與最近的時(shí)間窗口所記錄的時(shí)刻的差值Δt=t-cell[s-1].time;

      b) 判斷Δt是否大于一個(gè)時(shí)間單位μ,若是則轉(zhuǎn)到步驟c),否則轉(zhuǎn)到步驟e);

      e) 判斷事件類型,若為發(fā)出服務(wù)請求則轉(zhuǎn)步驟f),否則轉(zhuǎn)步驟h);

      f) 遍歷所有服務(wù)實(shí)例的未完成請求數(shù),選擇其中的最小值summin;

      g) 對第min個(gè)服務(wù)實(shí)例的最近一個(gè)時(shí)間窗口的未完成請求數(shù)加1,即cell[s-1].reqno=cell[s-1].reqno+1,然后對summin加1,算法結(jié)束;

      i) 判斷pos是否大于0,若是則轉(zhuǎn)步驟j),否則算法結(jié)束;

      j) 從應(yīng)答消息中得到服務(wù)實(shí)例編號back,對第back個(gè)服務(wù)實(shí)例的第pos個(gè)時(shí)間窗口的未完成請求數(shù)減1,即cell[pos].reqno=cell[pos].reqno-1,然后對sumback進(jìn)行減1操作,算法結(jié)束。

      4 實(shí) 驗(yàn)

      本節(jié)給出了采用動(dòng)態(tài)負(fù)載均衡算法的服務(wù)器集群和采用固定比例因子負(fù)載均衡算法的服務(wù)器集群的性能對比實(shí)驗(yàn)結(jié)果。兩個(gè)服務(wù)器集群cluster1和cluster2均部署JCF平臺(tái),通過適配服務(wù)接收服務(wù)總線上的請求消息。兩個(gè)集群內(nèi)均含有3臺(tái)業(yè)務(wù)服務(wù)器和1臺(tái)適配服務(wù)器,其中業(yè)務(wù)服務(wù)器上均部署有serviceA和serviceB兩種業(yè)務(wù)服務(wù),適配服務(wù)器上部署適配服務(wù)adapterService。serviceA用來模擬簡單業(yè)務(wù)服務(wù),不設(shè)置延遲;serviceB用來模擬復(fù)雜業(yè)務(wù)服務(wù),其延遲時(shí)間設(shè)置為3秒。如圖6所示。

      圖6 實(shí)驗(yàn)場景

      兩個(gè)集群的服務(wù)器配置相同,具體配置信息如下:

      ? Intel(R) Xeon(R) CPU X7550 @ 2.00 GHz;

      ? 8 GB RAM;

      ? Red Hat Enterprise Linux Server release 6.3 (Santiago);

      ? SUN JDK Version 1.6.0_10。

      其中cluster1采用動(dòng)態(tài)負(fù)載均衡算法,cluster2采用固定比例因子負(fù)載均衡算法,比例因子設(shè)置為1∶1∶1。按照J(rèn)CF平臺(tái)的處理機(jī)制,當(dāng)請求消息在服務(wù)總線上出現(xiàn)后,將由適配服務(wù)負(fù)責(zé)獲取該消息,然后執(zhí)行負(fù)載均衡算法選擇集群內(nèi)的一臺(tái)服務(wù)器,將請求交由該服務(wù)器進(jìn)行處理。

      實(shí)驗(yàn)環(huán)境搭建完成后用客戶端程序向服務(wù)總線持續(xù)發(fā)送serviceA的請求消息,發(fā)送間隔為3毫秒,該操作模擬民航請求中并發(fā)量大,同時(shí)處理速度較快的航班可售庫存查詢。第30秒鐘時(shí)發(fā)送一條serviceB的請求消息,模擬民航請求中隨時(shí)可能出現(xiàn)的業(yè)務(wù)功能復(fù)雜的運(yùn)價(jià)搜索或航班計(jì)劃創(chuàng)建請求。運(yùn)價(jià)搜索請求的處理需要在多條航路中綜合判斷以返回符合搜索條件的結(jié)果,該過程會(huì)涉及到多航段排列組合進(jìn)行運(yùn)價(jià)計(jì)算;而航班計(jì)劃創(chuàng)建會(huì)對原有航班計(jì)劃產(chǎn)生連鎖影響,需要進(jìn)行大量計(jì)算以安排出新的計(jì)劃表。這兩種請求都會(huì)耗費(fèi)大量服務(wù)器資源,降低服務(wù)器吞吐率。實(shí)驗(yàn)過程持續(xù)90秒鐘,結(jié)束后統(tǒng)計(jì)出兩個(gè)服務(wù)器集群的TPS數(shù)和集群內(nèi)各臺(tái)服務(wù)器的TPS數(shù),截取其中15秒鐘的數(shù)據(jù)繪制成如圖7-圖9所示。

      圖7 cluster1內(nèi)各服務(wù)器TPS

      圖8 cluster2內(nèi)各服務(wù)器TPS

      圖9 集群TPS

      從圖中可以看出,在第30秒時(shí)兩個(gè)集群中均有一臺(tái)服務(wù)器的TPS數(shù)突然下降,這是由于請求消息中出現(xiàn)了對serviceB的請求,該請求會(huì)占用大量服務(wù)器資源,導(dǎo)致其TPS數(shù)下降。不同的是cluster1內(nèi)另外兩臺(tái)服務(wù)器的TPS數(shù)在此種情況下出現(xiàn)了上升,集群TPS保持穩(wěn)定;而cluster2內(nèi)另外兩臺(tái)服務(wù)器的TPS數(shù)沒有明顯變化,集群TPS出現(xiàn)下降的情況。這說明動(dòng)態(tài)負(fù)載均衡起到了應(yīng)有的作用,在集群內(nèi)某臺(tái)服務(wù)器執(zhí)行了運(yùn)價(jià)搜索或航班計(jì)劃創(chuàng)建之類的復(fù)雜請求。隊(duì)列中出現(xiàn)積壓請求消息的情況后,動(dòng)態(tài)負(fù)載均衡算法根據(jù)各臺(tái)服務(wù)器未完成請求數(shù)的情況自動(dòng)將新接收到的請求多分發(fā)給另外兩臺(tái)負(fù)載較小的服務(wù)器,從而使集群TPS不受影響或受影響較小。而固定比例因子負(fù)載均衡算法則不論服務(wù)器負(fù)載情況變化,只能按照設(shè)定好的比例因子將請求按比例發(fā)送給各臺(tái)服務(wù)器,集群TPS會(huì)因此受到業(yè)務(wù)復(fù)雜程度的影響。

      5 結(jié) 語

      在分布式系統(tǒng)中,負(fù)載均衡的目的是根據(jù)各臺(tái)服務(wù)器的性能指標(biāo)和負(fù)載情況來分配請求[10],服務(wù)器的處理能力和當(dāng)前未完成請求數(shù)是負(fù)載均衡算法所要參考的重要指標(biāo)[11]。未完成請求數(shù)是一個(gè)動(dòng)態(tài)變化的指標(biāo),維護(hù)該參數(shù)首先需要設(shè)計(jì)一種動(dòng)態(tài)度量策略,該策略要良好地適配系統(tǒng)結(jié)構(gòu)和工作機(jī)制,以準(zhǔn)確地反映系統(tǒng)中負(fù)載的變化情況。負(fù)載均衡算法是負(fù)載均衡策略的核心,在設(shè)計(jì)時(shí)要減小復(fù)雜度,避免負(fù)載均衡算法成為系統(tǒng)性能瓶頸[12]。

      本文針對JCF平臺(tái)的結(jié)構(gòu)特點(diǎn)設(shè)計(jì)了動(dòng)態(tài)負(fù)載均衡算法。該算法用一種窗口式的數(shù)據(jù)結(jié)構(gòu)維護(hù)每個(gè)業(yè)務(wù)實(shí)例的未完成請求數(shù),并且用滑動(dòng)窗口的方式完成超時(shí)請求的自動(dòng)丟棄。在此基礎(chǔ)上以業(yè)務(wù)實(shí)例的未完成請求數(shù)為度量指標(biāo),將請求分發(fā)到負(fù)載量最小的服務(wù)器上,最大程度減少民航業(yè)務(wù)復(fù)雜度的變化對集群吞吐率的影響。這增強(qiáng)了JCF平臺(tái)的魯棒性,使JCF平臺(tái)在高并發(fā)、復(fù)雜程度動(dòng)態(tài)變化的民航業(yè)務(wù)環(huán)境下保持穩(wěn)定的性能。

      [1] 尤天舒. 基于Agent的集群負(fù)載均衡模型及其實(shí)驗(yàn)研究[D].吉林大學(xué),2014.

      [2] 王紅斌. Web服務(wù)器集群系統(tǒng)的自適應(yīng)負(fù)載均衡調(diào)度策略研究[D].吉林大學(xué),2013.

      [3] 晉英豪. 異構(gòu)網(wǎng)絡(luò)中負(fù)載均衡和資源分配策略研究[D].中國科學(xué)技術(shù)大學(xué),2015.

      [4] 胡楊. 虛實(shí)結(jié)合框架下負(fù)載均衡服務(wù)集群的研究與實(shí)現(xiàn)[D].浙江大學(xué),2015.

      [5] 陳濤,肖儂,劉芳. 對象存儲(chǔ)系統(tǒng)中自適應(yīng)的元數(shù)據(jù)負(fù)載均衡機(jī)制[J]. 軟件學(xué)報(bào),2013,24(2):331-342.

      [6] 弭偉. 基于DHT的分布式網(wǎng)絡(luò)中負(fù)載均衡機(jī)制及其安全性的研究[D].北京郵電大學(xué),2012.

      [7] 吳和生. 云計(jì)算環(huán)境中多核多進(jìn)程負(fù)載均衡技術(shù)的研究與應(yīng)用[D].南京大學(xué),2013.

      [8] 楊際祥. 并行與分布式計(jì)算負(fù)載均衡問題研究[D].大連理工大學(xué),2012.

      [9] 周瑩蓮,劉甫.服務(wù)器負(fù)載均衡技術(shù)研究[J]. 計(jì)算機(jī)與數(shù)字工程,2010,38(4):11-14,35.

      [10] 尚志浩.OpenFlow網(wǎng)絡(luò)中服務(wù)器負(fù)載均衡的研究[D].蘭州大學(xué),2014.

      [11] 吳宇文.基于OpenFlow的網(wǎng)絡(luò)負(fù)載均衡算法的研究與設(shè)計(jì)[D].華東師范大學(xué),2014.

      [12] 周松泉.一種新的服務(wù)器集群負(fù)載均衡算法[D].南昌航空大學(xué),2012.

      DYNAMIC LOAD BALANCE DESIGN FOR HIGH CONCURRENCY CIVIL AVIATION BUSINESS

      Tian Feng1Ni Zhaoyang2Ding Jianli2Wang Jing2

      1(ResearchandDevelopmentCenter,TravelSkyTechnologyLimited,Beijing100000,China)2(SchoolofComputerScienceandTechnology,CivilAviationUniversityofChina,Tianjin300000,China)

      For the features of civil aviation business such as a lot of real-time concurrent requests, complicated business functions and large data amount, we briefly introduced the overall architecture and load balance mechanism of current business system, and analysed the merits and drawbacks of existing load balance algorithm. To promote the robustness and reliability of civil aviation business system, we put forward an improved dynamic load balance strategy based on the original mechanism in accordance with the software and hardware feature. Meanwhile we designed a new data structure required for maintaining the load measurement indicators and the relative method to maintain such indicator in this structure, and carried out experiment for contrast verification. Experimental result indicated that the dynamic load balance strategy could cope well with high concurrency and complicated network environment, which promoted the robustness and reliability of the system.

      DynamicLoad balanceHigh concurrencyCivil aviationDistributed

      2015-07-06。民航局科技創(chuàng)新引導(dǎo)資金專項(xiàng)(MHRD 20130106,MHRD20140106,MHRD20150107);中國民航大學(xué)中央高?;痦?xiàng)目(3122014P004,3122014C016)。田豐,工程師,主研領(lǐng)域:中間件及云計(jì)算架構(gòu)。倪兆陽,碩士生。丁建立,教授。王靜,講師。

      TP319

      A

      10.3969/j.issn.1000-386x.2016.10.001

      猜你喜歡
      均衡器實(shí)例集群
      海上小型無人機(jī)集群的反制裝備需求與應(yīng)對之策研究
      一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
      電子制作(2018年11期)2018-08-04 03:25:40
      Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
      勤快又呆萌的集群機(jī)器人
      無線傳感網(wǎng)OFDM系統(tǒng)中信道均衡器的電路實(shí)現(xiàn)
      電子器件(2015年5期)2015-12-29 08:42:39
      一種基于LC振蕩電路的串聯(lián)蓄電池均衡器
      完形填空Ⅱ
      完形填空Ⅰ
      基于LMS 算法的自適應(yīng)均衡器仿真研究
      基于概率軟切換的兩級雙模盲均衡器
      西宁市| 定安县| 合川市| 沙洋县| 名山县| 龙里县| 张北县| 丰都县| 嘉善县| 茶陵县| 耿马| 临朐县| 柳州市| 广汉市| 吉木萨尔县| 镇原县| 黄平县| 班玛县| 德州市| 拜城县| 通山县| 内江市| 岳西县| 娄烦县| 邢台县| 稷山县| 丰城市| 郑州市| 高青县| 甘南县| 缙云县| 满洲里市| 柳河县| 阿荣旗| 博乐市| 胶南市| 南江县| 兴化市| 凤城市| 廊坊市| 穆棱市|