基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化

基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化

ID:26974435

大?。?5.50 KB

頁數(shù):6頁

時(shí)間:2018-11-30

基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化_第1頁
基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化_第2頁
基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化_第3頁
基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化_第4頁
基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化_第5頁
資源描述:

《基于corba的java消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、基于CORBA的JAVA消息服務(wù)中間件的設(shè)計(jì)與優(yōu)化摘要CROBA、D等RPC中間件在大規(guī)模的分布計(jì)算應(yīng)用中有其局限性。而Java消息服務(wù)在異步通信、松散耦合和多對(duì)多通信等方面提供了強(qiáng)有力的支持。本文介紹了CJMQ-一個(gè)基于CORBA的多線程Java消息服務(wù)中間件,描述了CJMQ的體系結(jié)構(gòu),討論了消息派發(fā)機(jī)制的優(yōu)化設(shè)計(jì),并且對(duì)當(dāng)前CJMQ的實(shí)現(xiàn)進(jìn)行了性能評(píng)價(jià)和分析。關(guān)鍵字Java消息服務(wù);消息中間件;CORBA中圖分類號(hào)TP393Connectionmanager接受客戶的建立連接的請(qǐng)求,并分配該連接一個(gè)唯一的連接標(biāo)識(shí)??蛻粼谡?qǐng)求連接的時(shí)候,會(huì)同時(shí)發(fā)送自己的消息

2、處理對(duì)象(messagehandlerobject)的引用;Connectionmanager將此對(duì)象引用和連接標(biāo)識(shí)存儲(chǔ)到派發(fā)緩沖和數(shù)據(jù)庫中。Leasemanager主要有兩個(gè)功能,其一是檢測(cè)所有已建立連接的客戶是否還聯(lián)通,如果已經(jīng)斷開則清除該客戶的連接信息;并且如果該客戶沒有持久訂閱,還將清除發(fā)送給它的消息以及應(yīng)答;其二是檢測(cè)消息隊(duì)列中的消息是否已經(jīng)過期,如果過期則清除該消息。4CJMQ消息派發(fā)機(jī)制的優(yōu)化單位時(shí)間內(nèi)的消息吞吐量是衡量MOM系統(tǒng)性能的一個(gè)重要指標(biāo),而消息派發(fā)機(jī)制對(duì)該性能影響很大。這一節(jié)主要闡述我們?cè)谠O(shè)計(jì)CJMQ時(shí)對(duì)其消息派發(fā)機(jī)制的優(yōu)化。4.1派

3、發(fā)消息給一個(gè)接收者問題:在點(diǎn)對(duì)點(diǎn)模型中,多個(gè)派發(fā)線程會(huì)同時(shí)訪問派發(fā)緩沖(存放客戶連接標(biāo)識(shí)和其消息處理對(duì)象的引用)以便將消息分別派發(fā)給某個(gè)接收者。同時(shí)新建連接或者關(guān)閉連接也會(huì)導(dǎo)致對(duì)派發(fā)緩沖的更改(增加或者刪除)。為了同步,傳統(tǒng)的做法是采用鎖機(jī)制,當(dāng)?shù)谝粋€(gè)線程訪問緩沖時(shí),首先對(duì)該緩沖加鎖,然后再對(duì)緩沖中的數(shù)據(jù)進(jìn)行處理,處理完畢后解鎖,以便使其他線程可以訪問該緩沖。如果緩沖加鎖,則任何其他線程都必須等待,直到解鎖為止。在CJMQ的實(shí)現(xiàn)中如果采用鎖機(jī)制,會(huì)導(dǎo)致派發(fā)線程訪問的串行,嚴(yán)重影響系統(tǒng)性能。優(yōu)化:用讀/寫鎖同步多線程對(duì)派發(fā)緩沖的訪問。考慮到在點(diǎn)對(duì)點(diǎn)模型中派發(fā)操作

4、主要是讀取派發(fā)緩沖中的消息處理對(duì)象引用,然后調(diào)用它的發(fā)送消息接口,而并不更改(增加和刪除)派發(fā)緩沖。對(duì)于這一類操作,可以使用讀鎖;對(duì)于更改派發(fā)緩沖的操作,可以使用寫鎖。讀鎖可以并發(fā),而寫鎖必須與其它寫鎖和讀鎖互斥。結(jié)果:使多個(gè)派發(fā)線程可以并發(fā)訪問派發(fā)緩沖,從而大大提高了系統(tǒng)的消息吞吐率。但是對(duì)于派發(fā)緩沖的更改,還必須串行。4.2派發(fā)消息給多個(gè)接收者問題:在發(fā)布/訂閱模型中,每個(gè)派發(fā)線程通過使用疊代器(iterator)循環(huán)調(diào)用派發(fā)緩沖中每個(gè)接收者的消息處理對(duì)象接口實(shí)現(xiàn)廣播派發(fā),這要求在循環(huán)過程中不能對(duì)派發(fā)緩沖更改。但是新建連接或者關(guān)閉連接會(huì)導(dǎo)致對(duì)派發(fā)緩沖的更改

5、(增加或者刪除)。在這種情況下,如果采用傳統(tǒng)的鎖機(jī)制,會(huì)限制派發(fā)線程的并發(fā);如果采用上一節(jié)的讀/寫鎖機(jī)制,盡管允許派發(fā)線程的并發(fā),但是可能又會(huì)造成更改線程的“饑餓”,導(dǎo)致新的接收者不能及時(shí)接收消息或者使派發(fā)線程調(diào)用廢棄的消息處理對(duì)象接口而浪費(fèi)系統(tǒng)資源。優(yōu)化:采用先拷貝、再發(fā)送的算法。派發(fā)線程首先給派發(fā)緩沖加鎖,然后把消息的所有接收者的消息處理對(duì)象引用拷貝到一個(gè)臨時(shí)的緩沖區(qū),再釋放鎖以允許其它線程盡快進(jìn)入。這時(shí)通過對(duì)臨時(shí)緩沖區(qū)中的對(duì)象接口循環(huán)調(diào)用,實(shí)現(xiàn)廣播派發(fā)消息。結(jié)果:盡管廣播派發(fā)耗時(shí)較長,但是由于派發(fā)線程沒有獨(dú)占派發(fā)緩沖(拷貝的耗時(shí)很少),從而最大可能的提高

6、了派發(fā)線程的并發(fā)性。此外,又不會(huì)使更改線程處于“饑餓”狀態(tài),它依然可以更改派發(fā)緩沖。5CJMQ性能測(cè)試l測(cè)試環(huán)境所有測(cè)試都基于以下軟硬件配置:兩臺(tái)IntelPIII500MHZ,128MRAM;操作系統(tǒng)bit/s以太網(wǎng)。l測(cè)試方法影響MOM系統(tǒng)消息吞吐量的主要因素有:(1)消息是否為持久消息;(2)消息體的大??;(3)發(fā)布者和接收者的數(shù)量;(4)發(fā)布者、消息服務(wù)、接收者各自所處的位置。消息吞吐率的獲得是讓一個(gè)消息發(fā)布者連續(xù)的發(fā)送消息(測(cè)試中發(fā)送500個(gè)消息),由一個(gè)或者若干個(gè)接收者接收消息,然后報(bào)告單位時(shí)間內(nèi)收到的消息數(shù),以其作為消息吞吐量。l測(cè)試結(jié)果表1顯示

7、了CJMQ單位時(shí)間內(nèi)的消息吞吐量。從表中可以看出:消息類型大小測(cè)試條件非持久消息(個(gè)/秒)持久消息(個(gè)/秒)1024byte128byte1024byte128byte一個(gè)發(fā)送者、一個(gè)接收者和CJMQ在同一臺(tái)計(jì)算機(jī)65705664一個(gè)發(fā)送者和接收者在一臺(tái)計(jì)算機(jī),CJMQ在局域網(wǎng)中的另一臺(tái)計(jì)算機(jī)10114390127一個(gè)發(fā)送者和五個(gè)接收者在一臺(tái)計(jì)算機(jī),CJMQ在局域網(wǎng)中的另一臺(tái)計(jì)算機(jī)32532248表1CJMQ消息吞吐量①持久消息的吞吐量比非持久消息的吞吐量低。這是因?yàn)镃JMQ對(duì)持久消息要做更多的處理,它要把持久消息存入數(shù)據(jù)庫中。非持久消息更有效率,但是持久消息

8、提供了可靠性保證,因此在選擇消息類型時(shí)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。