新聞中心

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

實(shí)時(shí)SOA從消息總線開始

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

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

本文引用地址:http://2s4d.com/article/201612/330174.htm

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

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

  • 使用異步操作技術(shù)而非阻塞操作。多線程技術(shù)為并發(fā)和多核架構(gòu)提供了機(jī)會。
    使用多線程技術(shù)并發(fā)處理緊急任務(wù)。仔細(xì)挑選架構(gòu)與優(yōu)先技術(shù)以避免線程沖突,并使用看門狗(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)慎地控制資源??刂苿討B(tài)內(nèi)存的使用,限制關(guān)鍵路徑外的內(nèi)存分配。
    進(jìn)行任何存儲訪問時(shí)盡量使用內(nèi)存緩存而非直接進(jìn)行磁盤操作。
    為中間件的可編程應(yīng)用擴(kuò)展提供“進(jìn)程內(nèi)(in-process)”機(jī)制,比如加載DLL文件或Java類。

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


圖3


圖4


圖5


圖6


圖7


總結(jié)

要想贏,就必須給賽車安裝最好的組件。同樣,性能關(guān)鍵的SOA系統(tǒng)也必須建立在消息處理、事件處理引擎和數(shù)據(jù)庫的最佳組合上。在這些SOA基礎(chǔ)組件中,消息中間件是最重要的,因?yàn)樗撬衅渌M件的交互中介。
如何確定最好的中間件呢?
首先,考慮架構(gòu)。選擇最符合需求的架構(gòu)。架構(gòu)不合適,系統(tǒng)就不可能有優(yōu)良的表現(xiàn)性能。
其次,選擇滿足需求的服務(wù)質(zhì)量控制。對網(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)行。沒有其它可以保證系統(tǒng)穩(wěn)定響應(yīng)的途徑。
最后,基于以上了解,選擇包含對應(yīng)用程序最為重要的指標(biāo)的中間件。
明白了以上所有因素,你就離建立最佳性能的SOA系統(tǒng)更接近了一步。


上一頁 1 2 下一頁

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

評論


技術(shù)專區(qū)

關(guān)閉