新聞中心

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

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

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
比如,正在開發(fā)中的新一代空中交通管理(Air Traffic Management)系統(tǒng),是為了調(diào)整日益繁忙的航線,并連接各客戶端(比如美國聯(lián)邦航空管理局、國防部及國土安全部)的工作。這些系統(tǒng)需要更高的信息帶寬用于追蹤更多的飛行器和更復(fù)雜的“自由飛行”軌跡,同時(shí)需要更快的信息響應(yīng)速度以更快地檢測飛行異常。其它方面也有類似的需求,比如醫(yī)療保健系統(tǒng)、數(shù)據(jù)采集與監(jiān)控(SCADA)系統(tǒng)、網(wǎng)絡(luò)監(jiān)控系統(tǒng)、能源分布系統(tǒng)、運(yùn)輸系統(tǒng),以及其它關(guān)鍵基礎(chǔ)設(shè)施系統(tǒng)。

SOA組件的最佳組合

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

實(shí)時(shí)應(yīng)用程序需要面向服務(wù)的基礎(chǔ)組件的最佳組合。SOA系統(tǒng)有三種基礎(chǔ)組件:消息總線、信息轉(zhuǎn)換/處理引擎和數(shù)據(jù)存儲(chǔ)庫(見圖1)。一般來說,這些組件會(huì)集成到企業(yè)服務(wù)總線中(ESB),并使用J2EE應(yīng)用程序服務(wù)器。


圖1


而在這些基礎(chǔ)組件中,消息總線是最重要的,因?yàn)樗撬衅渌M件交互的中介。
低性能的SOA系統(tǒng)或許會(huì)使用HTTP協(xié)議作為“消息總線”實(shí)現(xiàn)各組件間的消息交換。這種方案只適用于非實(shí)時(shí)應(yīng)用程序。HTTP協(xié)議缺乏可靠性、帶寬有限、延遲大,并且在系統(tǒng)暫時(shí)無法使用時(shí)不能提供緩沖或消息隊(duì)列以延時(shí)遞交。
解決方案是采用高性能的消息中間件,比如RTI Data-Distribution Service、IBM WebSphere MQ、TIBCO或SonicMQ等。這些中間件平臺(tái)在開發(fā)時(shí)充分考慮了可擴(kuò)展性和表現(xiàn)性能。而且,它們?yōu)椴煌膽?yīng)用方案采用不同的優(yōu)化架構(gòu)。

為什么消息性能很重要?

這是計(jì)算機(jī)實(shí)時(shí)超越人類實(shí)時(shí)的需求與期望。若系統(tǒng)中存在人類這一環(huán)節(jié),實(shí)時(shí)即指信息可以在一秒到幾秒反應(yīng)時(shí)間內(nèi)隨時(shí)可取;而在計(jì)算機(jī)到計(jì)算機(jī)環(huán)境中,卻必須以毫秒甚至微秒級(jí)別的速度處理信息。
計(jì)算機(jī)實(shí)時(shí)對(duì)消息基礎(chǔ)設(shè)施的要求更為嚴(yán)格:每個(gè)處理組件和存儲(chǔ)組件每秒都會(huì)收到幾十萬的消息或事件,延遲不能超過微秒級(jí)別,最差不能超過毫秒級(jí)別。這意味著消息中間件必須可以在系統(tǒng)范圍內(nèi)每秒傳送幾百萬的消息。
消息總線的負(fù)載能力也必須滿足基礎(chǔ)硬件設(shè)施的負(fù)載要求,并且不能在基礎(chǔ)硬件設(shè)施的限制(中央處理器速度、核心、速度和網(wǎng)絡(luò)帶寬)外再有其它限制。隨著中央處理器和網(wǎng)絡(luò)速度的提升,那些可以因硬件升級(jí)而提升性能的系統(tǒng)將獲得更大的競爭優(yōu)勢。比如,在一個(gè)自動(dòng)交易系統(tǒng)中,決定性因素并不是判定交易所用的絕對(duì)時(shí)間,而是要在競爭交易發(fā)生前做出判定并執(zhí)行。
關(guān)于計(jì)算機(jī)實(shí)時(shí),SOA系統(tǒng)的最后一個(gè)問題是,它們的“反向性能負(fù)載效應(yīng)曲線”,也就是系統(tǒng)在高負(fù)載下運(yùn)作時(shí)的及時(shí)響應(yīng)能力非常重要。一般的效應(yīng)曲線,比如人類實(shí)時(shí)系統(tǒng),由于負(fù)載的加重而使性能有所下降是可以接受的。這是因?yàn)槿祟惖钠谕c耐性是隨情況改變的,比如,人們明白在度假高峰期預(yù)定機(jī)票必須忍受較長的等待時(shí)間。而對(duì)計(jì)算機(jī)實(shí)時(shí)系統(tǒng)的要求卻與此相反。高負(fù)載時(shí)期正是“最關(guān)鍵業(yè)務(wù)”發(fā)生的時(shí)期,也是需要系統(tǒng)表現(xiàn)最佳性能的關(guān)鍵時(shí)期。比如,業(yè)務(wù)繁忙時(shí)必須更快地處理交易判定。
人類實(shí)時(shí)系統(tǒng)與計(jì)算機(jī)度實(shí)時(shí)系統(tǒng)的區(qū)別在表1中做了概要說明。


表1


為實(shí)時(shí)SOA選擇消息中間件

消息中間件是實(shí)時(shí)SOA系統(tǒng)的實(shí)現(xiàn)關(guān)鍵。雖然如此,仍然有許多問題需要考慮。如何為實(shí)時(shí)SOA系統(tǒng)選擇最佳的消息中間件呢?可以從架構(gòu)、服務(wù)質(zhì)量(QoS)控制與過濾器、性能提升技術(shù)、實(shí)時(shí)判定機(jī)制和度量指標(biāo)五個(gè)方面考慮。

1. 架構(gòu)
消息中間件有四種基本架構(gòu):星型拓?fù)洌╤ub-and-spoke)架構(gòu)、集群拓?fù)浼軜?gòu)、聯(lián)合架構(gòu)和對(duì)等架構(gòu)(peer-to-peer)。(見圖2)


圖2


星型拓?fù)浼軜?gòu)用一個(gè)服務(wù)器作為消息交換的路由,實(shí)現(xiàn)包含所有消息隊(duì)列的消息“服務(wù)”。
集群拓?fù)浼軜?gòu)使用一組服務(wù)器,分別處理不同種類的消息(比如消息隊(duì)列或主題所有權(quán))。每條消息通過一個(gè)服務(wù)器,但不是所有消息都用同一個(gè)服務(wù)器。
聯(lián)合架構(gòu)也使用一組服務(wù)器,但這組服務(wù)器是作為“資源庫”使用。比如,消息隊(duì)列可以出現(xiàn)在多個(gè)服務(wù)器中。消息可能只經(jīng)過一個(gè)服務(wù)器代理,也可能經(jīng)過多個(gè)服務(wù)器代理。
對(duì)等架構(gòu)不在傳輸路徑中使用任何代理。消息直接從發(fā)送方傳向接收方。
各種架構(gòu)都有其優(yōu)缺點(diǎn)。星型拓?fù)湫腿菀坠芾?,便于操作,但表現(xiàn)性能、容錯(cuò)率和可擴(kuò)展性比較差。集群架構(gòu)可擴(kuò)展性比星型架構(gòu)好,但容錯(cuò)性同樣較差,并且只能在網(wǎng)格范圍內(nèi)為附近的客戶端提供較好的表現(xiàn)性能。聯(lián)合架構(gòu)的擴(kuò)展性更好一些,但其延遲更大,因?yàn)槊織l消息都要經(jīng)過至少兩個(gè)服務(wù)器的代理。對(duì)等架構(gòu)提供了最好的可擴(kuò)展性、表現(xiàn)性能,最低的延遲和最高的容錯(cuò)率,但實(shí)現(xiàn)起來很困難,并且對(duì)業(yè)務(wù)的支持有限。
隨著需求越來越具實(shí)時(shí)性,對(duì)性能、可預(yù)見性和平衡的要求越來越傾向于對(duì)等架構(gòu)。這就是為什么像IP語音通信和IP視頻傳播(比如Skype)之類的需求網(wǎng)絡(luò)會(huì)采用對(duì)等的設(shè)計(jì)方案
服務(wù)質(zhì)量控制與過濾器
服務(wù)質(zhì)量控制是以低延遲、高處理能力提供及時(shí)數(shù)據(jù)的關(guān)鍵。中央處理器、內(nèi)存和網(wǎng)絡(luò)帶寬資源必須在所有通信過程中共享。然而,并不是所有的通信都需要相同的帶寬或有相同的緊急性和重要性。如果沒有服務(wù)質(zhì)量控制,應(yīng)用程序就無法分辨不同的信息類別和反應(yīng)需求。這會(huì)導(dǎo)致中間件不能靈活地做出判定,對(duì)信息進(jìn)行優(yōu)化處理或滿足應(yīng)用需求。
比如,使用TCP協(xié)議(傳輸控制協(xié)議)的傳統(tǒng)網(wǎng)絡(luò)環(huán)境中,一個(gè)小而緊急的警告消息可能在TCP連接中被排在一個(gè)較大的文件傳輸后面。因?yàn)門CP無視消息源,并穩(wěn)定有序地傳輸每一個(gè)字節(jié)。這個(gè)警告消息只有在傳完整個(gè)文件之后才能被成功接收到??梢约傧朐趶V域網(wǎng)(WAN)中轉(zhuǎn)播直播節(jié)目的情況。網(wǎng)絡(luò)阻塞可能會(huì)造成圖像丟失;由于沒有服務(wù)質(zhì)量控制,中間件就會(huì)繼續(xù)查找丟失的圖像,而不是選擇傳送最新的圖像。這樣就不只是丟失幾張圖片的問題,極有可能圖像會(huì)凍結(jié),直到成功取得丟失的圖像。所以,即使硬件可以提供不錯(cuò)的表現(xiàn)性能,系統(tǒng)的整體性能仍然大打折扣。
為實(shí)現(xiàn)計(jì)算機(jī)速度的實(shí)時(shí)性能,消息中間件必須至少滿足以下服務(wù)質(zhì)量控制要求:穩(wěn)定性、緩沖計(jì)算、流量控制、生命周期、歷史記錄和傳輸優(yōu)先級(jí)。(見表2)


表2


過濾功能是系統(tǒng)擴(kuò)展性與表現(xiàn)性能的關(guān)鍵。支持過濾的中間件可以只為各組件傳送最重要的內(nèi)容,這可以節(jié)省大量網(wǎng)絡(luò)帶寬和CPU資源,使系統(tǒng)可以處理更多的信息。比如,事件處理引擎可能會(huì)查找關(guān)系到某些計(jì)算機(jī)或網(wǎng)絡(luò)單元,或者屬于某種協(xié)議的網(wǎng)絡(luò)活動(dòng)。中間件并不會(huì)將所有網(wǎng)絡(luò)事件都傳送到引擎,并讓引擎過濾掉不相關(guān)數(shù)據(jù),而是先進(jìn)行過濾處理,然后再發(fā)送相關(guān)數(shù)據(jù),這樣可為事件處理引擎節(jié)省網(wǎng)絡(luò)帶寬與CPU資源。
主要有兩種過濾器:一種是基于時(shí)間的,另一種是基于內(nèi)容的。基于時(shí)間的過濾器會(huì)限制信息頻率,比如每秒最多允許發(fā)送10次更新信息?;跁r(shí)間的過濾器對(duì)應(yīng)用程序非常有用,例如以人為本的儀表板,只需要獲得走向與概要信息即可。


上一頁 1 2 下一頁

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

評(píng)論


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

關(guān)閉