新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)時(shí)SOA從消息總線(xiàn)開(kāi)始

實(shí)時(shí)SOA從消息總線(xiàn)開(kāi)始

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò) 收藏

基于內(nèi)容的過(guò)濾器從內(nèi)容上對(duì)信息進(jìn)行簡(jiǎn)化處理。舉例來(lái)說(shuō),一個(gè)顯示程序可能只關(guān)心接近機(jī)場(chǎng)的飛機(jī)位置?;趦?nèi)容的過(guò)濾器就會(huì)篩選出所有離機(jī)場(chǎng)很遠(yuǎn)的飛機(jī)。

本文引用地址:http://butianyuan.cn/article/201612/330174.htm

3. 性能提升技術(shù)
一輛無(wú)論構(gòu)造多么合理的汽車(chē),如果沒(méi)有強(qiáng)力的引擎就不可能發(fā)揮出優(yōu)良的性能。同樣,消息中間件也需要一些特征與技術(shù)以獲得最佳性能。其中以下方面最為重要:組播技術(shù)、消息批處理功能、消息分段技術(shù)、異步遠(yuǎn)程拷貝和傳送過(guò)程中的零拷貝訪(fǎng)問(wèn)。

4. 實(shí)時(shí)判定機(jī)制
實(shí)時(shí)并不是簡(jiǎn)單的速度快而已。為實(shí)現(xiàn)穩(wěn)定的實(shí)時(shí),系統(tǒng)必須同時(shí)穩(wěn)定而高速。實(shí)時(shí)判定機(jī)制決定了每次系統(tǒng)運(yùn)算時(shí)的穩(wěn)定性。一個(gè)實(shí)時(shí)判定系統(tǒng)必須在每個(gè)運(yùn)算上花費(fèi)同樣的時(shí)間。
然而,并不是你做的那些事決定實(shí)時(shí)操作能力,而是你不做的那些事決定了實(shí)時(shí)操作能力。因此,實(shí)時(shí)的滿(mǎn)足需要處理器、資源定位和管理上的穩(wěn)定性與一致性。內(nèi)存分配、等待周期、關(guān)閉中斷或者其它的任何程序操作都會(huì)引發(fā)無(wú)法預(yù)料的行為。為保證穩(wěn)定性,每個(gè)操作必須以同樣的方式同樣的時(shí)間進(jìn)行。對(duì)于一個(gè)包含多個(gè)步驟的操作,每一步都必須是可靠的,因?yàn)槠渲锌赡馨豢煽康男畔ⅰH绻骋徊绞遣豢煽康?,那整個(gè)操作鏈都會(huì)變?yōu)椴豢煽康摹?br />因?yàn)榛A(chǔ)硬件設(shè)施一般都是非常穩(wěn)定的,因此系統(tǒng)的不確定因素源一般在操作系統(tǒng)、中間件或應(yīng)用邏輯/代碼中。實(shí)時(shí)操作系統(tǒng)是一項(xiàng)大受好評(píng)的技術(shù)。應(yīng)用程序必須本著傳送穩(wěn)定結(jié)果的理念進(jìn)行設(shè)計(jì)。然而,在許多系統(tǒng)中,中間件是實(shí)時(shí)運(yùn)算的關(guān)鍵。
這意味著在實(shí)際應(yīng)用中消息中間件必須:

  • 使用異步操作技術(shù)而非阻塞操作。多線(xiàn)程技術(shù)為并發(fā)和多核架構(gòu)提供了機(jī)會(huì)。
    使用多線(xiàn)程技術(shù)并發(fā)處理緊急任務(wù)。仔細(xì)挑選架構(gòu)與優(yōu)先技術(shù)以避免線(xiàn)程沖突,并使用看門(mén)狗(watchdogs)和延時(shí)設(shè)定(timeouts)監(jiān)控和維持應(yīng)用程序正常運(yùn)行。
    在穩(wěn)定的基礎(chǔ)設(shè)施上執(zhí)行(實(shí)時(shí)操作系統(tǒng)、實(shí)時(shí)Java虛擬機(jī),實(shí)時(shí)中間件組件)。
    謹(jǐn)慎地控制資源??刂苿?dòng)態(tài)內(nèi)存的使用,限制關(guān)鍵路徑外的內(nèi)存分配。
    進(jìn)行任何存儲(chǔ)訪(fǎng)問(wèn)時(shí)盡量使用內(nèi)存緩存而非直接進(jìn)行磁盤(pán)操作。
    為中間件的可編程應(yīng)用擴(kuò)展提供“進(jìn)程內(nèi)(in-process)”機(jī)制,比如加載DLL文件或Java類(lèi)。

5. 度量指標(biāo)
可以認(rèn)為,優(yōu)秀的度量指標(biāo)是決定中間件最終性能的唯一條件。然而,定義消息中間件的特征遠(yuǎn)比看起來(lái)復(fù)雜得多。
大多廠(chǎng)商只提供一些關(guān)于消息處理能力的信息,類(lèi)似每秒處理多少消息或字節(jié)等。還有少數(shù)廠(chǎng)商提供關(guān)于延遲的測(cè)試數(shù)據(jù)(從發(fā)送方到接收方的端對(duì)端延遲)。幾乎沒(méi)有廠(chǎng)商會(huì)提供關(guān)于可擴(kuò)展性和不穩(wěn)定同步的度量指標(biāo),包括隨著系統(tǒng)發(fā)展性能的變化、負(fù)載增加,或者消息之間的變更。并且,這些結(jié)果很大程度上依賴(lài)于計(jì)算機(jī)和網(wǎng)絡(luò)硬件設(shè)施,以及測(cè)試方案。
比如,廠(chǎng)商可能會(huì)提供關(guān)于執(zhí)行時(shí)間和處理能力的數(shù)據(jù),聲稱(chēng)他們的產(chǎn)品可以以低于0.5毫秒的時(shí)間完成一條消息的傳送,并可以每秒傳送1000000條消息,但并不會(huì)指出是否可以用一個(gè)應(yīng)用程序同時(shí)完成這兩項(xiàng)任務(wù)。甚至,都不會(huì)指明這個(gè)執(zhí)行時(shí)間是否代表理想情況下的最佳性能,是平均時(shí)間還是可以保證大部分消息(比如99.99%)在這個(gè)時(shí)間內(nèi)傳送等。消息容量和內(nèi)容類(lèi)型(不透明的字節(jié)、字符串或復(fù)合類(lèi)型)都有極大的影響。比如,如果指的是沒(méi)有實(shí)際意義的四個(gè)字節(jié)的消息,“條/秒”也就沒(méi)多少參考價(jià)值。如果不考慮類(lèi)型轉(zhuǎn)換(marshaling,一種稱(chēng)為列集轉(zhuǎn)換方式),每秒多少字節(jié)的數(shù)據(jù)也沒(méi)有意義。比如,傳送raw XML字符串的低效率數(shù)據(jù)轉(zhuǎn)換方式可以每秒傳送許多字節(jié)。然而,使用經(jīng)過(guò)壓縮處理的XML語(yǔ)言或二進(jìn)制格式的高效轉(zhuǎn)換方式在傳送實(shí)際消息時(shí)要快得多。這種例子數(shù)不勝數(shù)。
既然不存在標(biāo)準(zhǔn)的實(shí)時(shí)中間件性能的測(cè)試程序,我們就只有以下選擇:依靠廠(chǎng)商給的數(shù)據(jù),開(kāi)發(fā)自己的度量標(biāo)準(zhǔn),以及通過(guò)使用中間件的應(yīng)用程序來(lái)進(jìn)行判斷。第一個(gè)過(guò)于模糊,第二個(gè)費(fèi)時(shí)且成本高,而第三個(gè)是主觀(guān)判斷。
通過(guò)上面的說(shuō)明,了解以下指標(biāo)可能會(huì)有助于評(píng)估中間件的性能,并可最低限度地從提供實(shí)時(shí)SOA系統(tǒng)的廠(chǎng)商處獲得如下信息:基于消息容量的處理能力、基于CPU使用情況的處理能力、消息批處理能力和基于穩(wěn)定性的最佳表現(xiàn);基于消息內(nèi)容的執(zhí)行時(shí)間、基于處理能力的執(zhí)行時(shí)間等。
比如,圖3到圖7顯示了兩種不同中間件架構(gòu)處理能力與執(zhí)行時(shí)間的比較圖:一個(gè)星型構(gòu)架(JMS)和一個(gè)對(duì)等結(jié)構(gòu)的網(wǎng)絡(luò)(DDS)。
可以參考由RTI Data Distribution Service(運(yùn)行環(huán)境數(shù)據(jù)分發(fā)服務(wù))提供的更多詳細(xì)的數(shù)據(jù)。運(yùn)行平臺(tái)是使用2GHz雙核AMD皓龍的計(jì)算機(jī),操作系統(tǒng)是紅帽Linux4.0企業(yè)版。


圖3


圖4


圖5


圖6


圖7


總結(jié)

要想贏(yíng),就必須給賽車(chē)安裝最好的組件。同樣,性能關(guān)鍵的SOA系統(tǒng)也必須建立在消息處理、事件處理引擎和數(shù)據(jù)庫(kù)的最佳組合上。在這些SOA基礎(chǔ)組件中,消息中間件是最重要的,因?yàn)樗撬衅渌M件的交互中介。
如何確定最好的中間件呢?
首先,考慮架構(gòu)。選擇最符合需求的架構(gòu)。架構(gòu)不合適,系統(tǒng)就不可能有優(yōu)良的表現(xiàn)性能。
其次,選擇滿(mǎn)足需求的服務(wù)質(zhì)量控制。對(duì)網(wǎng)絡(luò)和數(shù)據(jù)傳送的有效控制將極大地影響到所有組件的工作效率。
第三,選擇適合應(yīng)用程序的、包含性能提升技術(shù)的中間件。比如組播技術(shù),就可以在同等負(fù)載下極大地提高網(wǎng)絡(luò)的“扇出(fan out)”能力。
第四,如果系統(tǒng)必須在一定狀況下保持性能穩(wěn)定,那就在設(shè)計(jì)方案中保證至少關(guān)鍵組件可以在這些實(shí)時(shí)環(huán)境中穩(wěn)定運(yùn)行。沒(méi)有其它可以保證系統(tǒng)穩(wěn)定響應(yīng)的途徑。
最后,基于以上了解,選擇包含對(duì)應(yīng)用程序最為重要的指標(biāo)的中間件。
明白了以上所有因素,你就離建立最佳性能的SOA系統(tǒng)更接近了一步。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 實(shí)時(shí)SOA消息總

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉