基于內(nèi)容的過濾器從內(nèi)容上對信息進行簡化處理。舉例來說,一個顯示程序可能只關(guān)心接近機場的飛機位置?;趦?nèi)容的過濾器就會篩選出所有離機場很遠的飛機。本文引用地址:http://www.ex-cimer.com/article/201612/330174.htm3. 性能提升技術(shù)
一輛無論構(gòu)造多么合理的汽車,如果沒有強力的引擎就不可能發(fā)揮出優(yōu)良的性能。同樣,消息中間件也需要一些特征與技術(shù)以獲得最佳性能。其中以下方面最為重要:組播技術(shù)、消息批處理功能、消息分段技術(shù)、異步遠程拷貝和傳送過程中的零拷貝訪問。
4. 實時判定機制
實時并不是簡單的速度快而已。為實現(xiàn)穩(wěn)定的實時,系統(tǒng)必須同時穩(wěn)定而高速。實時判定機制決定了每次系統(tǒng)運算時的穩(wěn)定性。一個實時判定系統(tǒng)必須在每個運算上花費同樣的時間。
然而,并不是你做的那些事決定實時操作能力,而是你不做的那些事決定了實時操作能力。因此,實時的滿足需要處理器、資源定位和管理上的穩(wěn)定性與一致性。內(nèi)存分配、等待周期、關(guān)閉中斷或者其它的任何程序操作都會引發(fā)無法預料的行為。為保證穩(wěn)定性,每個操作必須以同樣的方式同樣的時間進行。對于一個包含多個步驟的操作,每一步都必須是可靠的,因為其中可能包含不可靠的信息。如果某一步是不可靠的,那整個操作鏈都會變?yōu)椴豢煽康摹?br />因為基礎(chǔ)硬件設(shè)施一般都是非常穩(wěn)定的,因此系統(tǒng)的不確定因素源一般在操作系統(tǒng)、中間件或應用邏輯/代碼中。實時操作系統(tǒng)是一項大受好評的技術(shù)。應用程序必須本著傳送穩(wěn)定結(jié)果的理念進行設(shè)計。然而,在許多系統(tǒng)中,中間件是實時運算的關(guān)鍵。
這意味著在實際應用中消息中間件必須:
- 使用異步操作技術(shù)而非阻塞操作。多線程技術(shù)為并發(fā)和多核架構(gòu)提供了機會。
使用多線程技術(shù)并發(fā)處理緊急任務。仔細挑選架構(gòu)與優(yōu)先技術(shù)以避免線程沖突,并使用看門狗(watchdogs)和延時設(shè)定(timeouts)監(jiān)控和維持應用程序正常運行。
在穩(wěn)定的基礎(chǔ)設(shè)施上執(zhí)行(實時操作系統(tǒng)、實時Java虛擬機,實時中間件組件)。
謹慎地控制資源??刂苿討B(tài)內(nèi)存的使用,限制關(guān)鍵路徑外的內(nèi)存分配。
進行任何存儲訪問時盡量使用內(nèi)存緩存而非直接進行磁盤操作。
為中間件的可編程應用擴展提供“進程內(nèi)(in-process)”機制,比如加載DLL文件或Java類。
5. 度量指標
可以認為,優(yōu)秀的度量指標是決定中間件最終性能的唯一條件。然而,定義消息中間件的特征遠比看起來復雜得多。
大多廠商只提供一些關(guān)于消息處理能力的信息,類似每秒處理多少消息或字節(jié)等。還有少數(shù)廠商提供關(guān)于延遲的測試數(shù)據(jù)(從發(fā)送方到接收方的端對端延遲)。幾乎沒有廠商會提供關(guān)于可擴展性和不穩(wěn)定同步的度量指標,包括隨著系統(tǒng)發(fā)展性能的變化、負載增加,或者消息之間的變更。并且,這些結(jié)果很大程度上依賴于計算機和網(wǎng)絡硬件設(shè)施,以及測試方案。
比如,廠商可能會提供關(guān)于執(zhí)行時間和處理能力的數(shù)據(jù),聲稱他們的產(chǎn)品可以以低于0.5毫秒的時間完成一條消息的傳送,并可以每秒傳送1000000條消息,但并不會指出是否可以用一個應用程序同時完成這兩項任務。甚至,都不會指明這個執(zhí)行時間是否代表理想情況下的最佳性能,是平均時間還是可以保證大部分消息(比如99.99%)在這個時間內(nèi)傳送等。消息容量和內(nèi)容類型(不透明的字節(jié)、字符串或復合類型)都有極大的影響。比如,如果指的是沒有實際意義的四個字節(jié)的消息,“條/秒”也就沒多少參考價值。如果不考慮類型轉(zhuǎn)換(marshaling,一種稱為列集轉(zhuǎn)換方式),每秒多少字節(jié)的數(shù)據(jù)也沒有意義。比如,傳送raw XML字符串的低效率數(shù)據(jù)轉(zhuǎn)換方式可以每秒傳送許多字節(jié)。然而,使用經(jīng)過壓縮處理的XML語言或二進制格式的高效轉(zhuǎn)換方式在傳送實際消息時要快得多。這種例子數(shù)不勝數(shù)。
既然不存在標準的實時中間件性能的測試程序,我們就只有以下選擇:依靠廠商給的數(shù)據(jù),開發(fā)自己的度量標準,以及通過使用中間件的應用程序來進行判斷。第一個過于模糊,第二個費時且成本高,而第三個是主觀判斷。
通過上面的說明,了解以下指標可能會有助于評估中間件的性能,并可最低限度地從提供實時SOA系統(tǒng)的廠商處獲得如下信息:基于消息容量的處理能力、基于CPU使用情況的處理能力、消息批處理能力和基于穩(wěn)定性的最佳表現(xiàn);基于消息內(nèi)容的執(zhí)行時間、基于處理能力的執(zhí)行時間等。
比如,圖3到圖7顯示了兩種不同中間件架構(gòu)處理能力與執(zhí)行時間的比較圖:一個星型構(gòu)架(JMS)和一個對等結(jié)構(gòu)的網(wǎng)絡(DDS)。
可以參考由RTI Data Distribution Service(運行環(huán)境數(shù)據(jù)分發(fā)服務)提供的更多詳細的數(shù)據(jù)。運行平臺是使用2GHz雙核AMD皓龍的計算機,操作系統(tǒng)是紅帽Linux4.0企業(yè)版。
圖3
圖4
圖5
圖6
圖7
總結(jié)
要想贏,就必須給賽車安裝最好的組件。同樣,性能關(guān)鍵的SOA系統(tǒng)也必須建立在消息處理、事件處理引擎和數(shù)據(jù)庫的最佳組合上。在這些SOA基礎(chǔ)組件中,消息中間件是最重要的,因為它是所有其它組件的交互中介。
如何確定最好的中間件呢?
首先,考慮架構(gòu)。選擇最符合需求的架構(gòu)。架構(gòu)不合適,系統(tǒng)就不可能有優(yōu)良的表現(xiàn)性能。
其次,選擇滿足需求的服務質(zhì)量控制。對網(wǎng)絡和數(shù)據(jù)傳送的有效控制將極大地影響到所有組件的工作效率。
第三,選擇適合應用程序的、包含性能提升技術(shù)的中間件。比如組播技術(shù),就可以在同等負載下極大地提高網(wǎng)絡的“扇出(fan out)”能力。
第四,如果系統(tǒng)必須在一定狀況下保持性能穩(wěn)定,那就在設(shè)計方案中保證至少關(guān)鍵組件可以在這些實時環(huán)境中穩(wěn)定運行。沒有其它可以保證系統(tǒng)穩(wěn)定響應的途徑。
最后,基于以上了解,選擇包含對應用程序最為重要的指標的中間件。
明白了以上所有因素,你就離建立最佳性能的SOA系統(tǒng)更接近了一步。
評論