国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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


面向服務(wù)的架構(gòu)(Service Oriented Architectures)被越來(lái)越多地應(yīng)用于實(shí)現(xiàn)高性能的實(shí)時(shí)系統(tǒng)。傳統(tǒng)系統(tǒng)是基于“人類實(shí)時(shí)”,受到人耐性的限制。然而,越來(lái)越多的系統(tǒng)開始運(yùn)行于“計(jì)算機(jī)實(shí)時(shí)”環(huán)境下,這里唯一的限制是計(jì)算機(jī)和網(wǎng)絡(luò)的速度。

比如,正在開發(fā)中的新一代空中交通管理(Air TrafficManagement)系統(tǒng),是為了調(diào)整日益繁忙的航線,并連接各客戶端(比如美國(guó)聯(lián)邦航空管理局、國(guó)防部及國(guó)土安全部)的工作。這些系統(tǒng)需要更高的信息帶寬用于追蹤更多的飛行器和更復(fù)雜的“自由飛行”軌跡,同時(shí)需要更快的信息響應(yīng)速度以更快地檢測(cè)飛行異常。其它方面也有類似的需求,比如醫(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組件的最佳組合

實(shí)時(shí)應(yīng)用程序需要面向服務(wù)的基礎(chǔ)組件的最佳組合。SOA系統(tǒng)有三種基礎(chǔ)組件:消息總線、信息轉(zhuǎn)換/處理引擎和數(shù)據(jù)存儲(chǔ)庫(kù)(見圖1)。一般來(lái)說(shuō),這些組件會(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í)無(wú)法使用時(shí)不能提供緩沖或消息隊(duì)列以延時(shí)遞交。

解決方案是采用高性能的消息中間件,比如RTI Data-Distribution Service、IBM WebSphereMQ、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ì)收到幾十萬(wàn)的消息或事件,延遲不能超過(guò)微秒級(jí)別,最差不能超過(guò)毫秒級(jí)別。這意味著消息中間件必須可以在系統(tǒng)范圍內(nèi)每秒傳送幾百萬(wàn)的消息。

消息總線的負(fù)載能力也必須滿足基礎(chǔ)硬件設(shè)施的負(fù)載要求,并且不能在基礎(chǔ)硬件設(shè)施的限制(中央處理器速度、核心、速度和網(wǎng)絡(luò)帶寬)外再有其它限制。隨著中央處理器和網(wǎng)絡(luò)速度的提升,那些可以因硬件升級(jí)而提升性能的系統(tǒng)將獲得更大的競(jìng)爭(zhēng)優(yōu)勢(shì)。比如,在一個(gè)自動(dòng)交易系統(tǒng)中,決定性因素并不是判定交易所用的絕對(duì)時(shí)間,而是要在競(jìng)爭(zhēng)交易發(fā)生前做出判定并執(zhí)行。

關(guān)于計(jì)算機(jī)實(shí)時(shí),SOA系統(tǒng)的最后一個(gè)問(wèn)題是,它們的“反向性能負(fù)載效應(yīng)曲線”,也就是系統(tǒng)在高負(fù)載下運(yùn)作時(shí)的及時(shí)響應(yīng)能力非常重要。一般的效應(yīng)曲線,比如人類實(shí)時(shí)系統(tǒng),由于負(fù)載的加重而使性能有所下降是可以接受的。這是因?yàn)槿祟惖钠谕c耐性是隨情況改變的,比如,人們明白在度假高峰期預(yù)定機(jī)票必須忍受較長(zhǎng)的等待時(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中做了概要說(shuō)明。


表1


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

消息中間件是實(shí)時(shí)SOA系統(tǒng)的實(shí)現(xiàn)關(guān)鍵。雖然如此,仍然有許多問(wèn)題需要考慮。如何為實(shí)時(shí)SOA系統(tǒng)選擇最佳的消息中間件呢?可以從架構(gòu)、服務(wù)質(zhì)量(QoS)控制與過(guò)濾器、性能提升技術(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))。每條消息通過(guò)一個(gè)服務(wù)器,但不是所有消息都用同一個(gè)服務(wù)器。

聯(lián)合架構(gòu)也使用一組服務(wù)器,但這組服務(wù)器是作為“資源庫(kù)”使用。比如,消息隊(duì)列可以出現(xiàn)在多個(gè)服務(wù)器中。消息可能只經(jīng)過(guò)一個(gè)服務(wù)器代理,也可能經(jīng)過(guò)多個(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)過(guò)至少兩個(gè)服務(wù)器的代理。對(duì)等架構(gòu)提供了最好的可擴(kuò)展性、表現(xiàn)性能,最低的延遲和最高的容錯(cuò)率,但實(shí)現(xiàn)起來(lái)很困難,并且對(duì)業(yè)務(wù)的支持有限。

隨著需求越來(lái)越具實(shí)時(shí)性,對(duì)性能、可預(yù)見性和平衡的要求越來(lái)越傾向于對(duì)等架構(gòu)。這就是為什么像IP語(yǔ)音通信和IP視頻傳播(比如Skype)之類的需求網(wǎng)絡(luò)會(huì)采用對(duì)等的設(shè)計(jì)方案。

2. 服務(wù)質(zhì)量控制與過(guò)濾器

服務(wù)質(zhì)量控制是以低延遲、高處理能力提供及時(shí)數(shù)據(jù)的關(guān)鍵。中央處理器、內(nèi)存和網(wǎng)絡(luò)帶寬資源必須在所有通信過(guò)程中共享。然而,并不是所有的通信都需要相同的帶寬或有相同的緊急性和重要性。如果沒(méi)有服務(wù)質(zhì)量控制,應(yīng)用程序就無(wú)法分辨不同的信息類別和反應(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ú)視消息源,并穩(wěn)定有序地傳輸每一個(gè)字節(jié)。這個(gè)警告消息只有在傳完整個(gè)文件之后才能被成功接收到??梢约傧朐趶V域網(wǎng)(WAN)中轉(zhuǎn)播直播節(jié)目的情況。網(wǎng)絡(luò)阻塞可能會(huì)造成圖像丟失;由于沒(méi)有服務(wù)質(zhì)量控制,中間件就會(huì)繼續(xù)查找丟失的圖像,而不是選擇傳送最新的圖像。這樣就不只是丟失幾張圖片的問(wèn)題,極有可能圖像會(huì)凍結(jié),直到成功取得丟失的圖像。所以,即使硬件可以提供不錯(cuò)的表現(xiàn)性能,系統(tǒng)的整體性能仍然大打折扣。

為實(shí)現(xiàn)計(jì)算機(jī)速度的實(shí)時(shí)性能,消息中間件必須至少滿足以下服務(wù)質(zhì)量控制要求:穩(wěn)定性、緩沖計(jì)算、流量控制、生命周期、歷史記錄和傳輸優(yōu)先級(jí)。(見表2)


表2


過(guò)濾功能是系統(tǒng)擴(kuò)展性與表現(xiàn)性能的關(guān)鍵。支持過(guò)濾的中間件可以只為各組件傳送最重要的內(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ò)濾掉不相關(guān)數(shù)據(jù),而是先進(jìn)行過(guò)濾處理,然后再發(fā)送相關(guān)數(shù)據(jù),這樣可為事件處理引擎節(jié)省網(wǎng)絡(luò)帶寬與CPU資源。

主要有兩種過(guò)濾器:一種是基于時(shí)間的,另一種是基于內(nèi)容的。基于時(shí)間的過(guò)濾器會(huì)限制信息頻率,比如每秒最多允許發(fā)送10次更新信息。基于時(shí)間的過(guò)濾器對(duì)應(yīng)用程序非常有用,例如以人為本的儀表板,只需要獲得走向與概要信息即可。

基于內(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ī)。

3. 性能提升技術(shù)

一輛無(wú)論構(gòu)造多么合理的汽車,如果沒(méi)有強(qiáng)力的引擎就不可能發(fā)揮出優(yōu)良的性能。同樣,消息中間件也需要一些特征與技術(shù)以獲得最佳性能。其中以下方面最為重要:組播技術(shù)、消息批處理功能、消息分段技術(shù)、異步遠(yuǎn)程拷貝和傳送過(guò)程中的零拷貝訪問(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í)的滿足需要處理器、資源定位和管理上的穩(wěn)定性與一致性。內(nèi)存分配、等待周期、關(guān)閉中斷或者其它的任何程序操作都會(huì)引發(fā)無(wú)法預(yù)料的行為。為保證穩(wěn)定性,每個(gè)操作必須以同樣的方式同樣的時(shí)間進(jìn)行。對(duì)于一個(gè)包含多個(gè)步驟的操作,每一步都必須是可靠的,因?yàn)槠渲锌赡馨豢煽康男畔?。如果某一步是不可靠的,那整個(gè)操作鏈都會(huì)變?yōu)椴豢煽康摹?/p>

因?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ù)而非阻塞操作。多線程技術(shù)為并發(fā)和多核架構(gòu)提供了機(jī)會(huì)。
    使用多線程技術(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)慎地控制資源??刂苿?dòng)態(tài)內(nèi)存的使用,限制關(guān)鍵路徑外的內(nèi)存分配。
    進(jìn)行任何存儲(chǔ)訪問(wè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)比看起來(lái)復(fù)雜得多。

大多廠商只提供一些關(guān)于消息處理能力的信息,類似每秒處理多少消息或字節(jié)等。還有少數(shù)廠商提供關(guān)于延遲的測(cè)試數(shù)據(jù)(從發(fā)送方到接收方的端對(duì)端延遲)。幾乎沒(méi)有廠商會(huì)提供關(guān)于可擴(kuò)展性和不穩(wěn)定同步的度量指標(biāo),包括隨著系統(tǒng)發(fā)展性能的變化、負(fù)載增加,或者消息之間的變更。并且,這些結(jié)果很大程度上依賴于計(jì)算機(jī)和網(wǎng)絡(luò)硬件設(shè)施,以及測(cè)試方案。

比如,廠商可能會(huì)提供關(guān)于執(zhí)行時(shí)間和處理能力的數(shù)據(jù),聲稱他們的產(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)容類型(不透明的字節(jié)、字符串或復(fù)合類型)都有極大的影響。比如,如果指的是沒(méi)有實(shí)際意義的四個(gè)字節(jié)的消息,“條/秒”也就沒(méi)多少參考價(jià)值。如果不考慮類型轉(zhuǎn)換(marshaling,一種稱為列集轉(zhuǎn)換方式),每秒多少字節(jié)的數(shù)據(jù)也沒(méi)有意義。比如,傳送rawXML字符串的低效率數(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è)試程序,我們就只有以下選擇:依靠廠商給的數(shù)據(jù),開發(fā)自己的度量標(biāo)準(zhǔn),以及通過(guò)使用中間件的應(yīng)用程序來(lái)進(jìn)行判斷。第一個(gè)過(guò)于模糊,第二個(gè)費(fèi)時(shí)且成本高,而第三個(gè)是主觀判斷。

通過(guò)上面的說(shuō)明,了解以下指標(biāo)可能會(huì)有助于評(píng)估中間件的性能,并可最低限度地從提供實(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è)對(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é)

要想贏,就必須給賽車安裝最好的組件。同樣,性能關(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)性能。其次,選擇滿足需求的服務(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)更接近了一步。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
傻傻分不清楚 - 基礎(chǔ)架構(gòu)、平臺(tái)和接口
IBM Developer EAI 概覽
淺析深究什么是中間件
什么是SOA(Service-Oriented Architecture)
SOA是中間件發(fā)展趨勢(shì) 產(chǎn)品向微內(nèi)核容器發(fā)展
搞一下新架構(gòu)下的軟件技術(shù) (A1):新架構(gòu)下的軟件技術(shù)概述
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服