帶你認(rèn)識(shí)中間件(Middleware)
中間件/Middleware 定義
中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源。中間件位于客戶(hù)機(jī)/ 服務(wù)器的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通訊。是連接兩個(gè)獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)的軟件。相連接的系統(tǒng),即使它們具有不同的接口,但通過(guò)中間件相互之間仍能交換信息。執(zhí)行中間件的一個(gè)關(guān)鍵途徑是信息傳遞。通過(guò)中間件,應(yīng)用程序可以工作于多平臺(tái)或 OS 環(huán)境。
簡(jiǎn)單的說(shuō),中間件是一種計(jì)算機(jī)軟件連接了軟件部件或者應(yīng)用程序。 這種軟件有一組服務(wù)構(gòu)成,這些服務(wù)包括允許多進(jìn)程運(yùn)行在一個(gè)或者多個(gè)機(jī)器上以達(dá)到在網(wǎng)絡(luò)中互相交互的目的。
中間件的特點(diǎn)
1、滿足大量應(yīng)用的需要; 2、運(yùn)行于多種硬件和OS平臺(tái); 3、支持分布式計(jì)算,提供跨網(wǎng)絡(luò)、硬件和OS平臺(tái)的透明性的應(yīng)用或服務(wù)的交互功能; 4、支持標(biāo)準(zhǔn)的協(xié)議; 5、支持標(biāo)準(zhǔn)的接口。
中間件可以應(yīng)用于以下情形,如連接公司 LAN和早期系統(tǒng)、交換兩個(gè)郵件系統(tǒng)間的信息、支持 web 客戶(hù)機(jī)與數(shù)據(jù)庫(kù)服務(wù)器交換信息等。
主要中間件的分類(lèi)
中間件分類(lèi)(IDC的分類(lèi)):大致可分為六類(lèi):終端仿真/屏幕轉(zhuǎn)換中間件、數(shù)據(jù)訪問(wèn)中間件、遠(yuǎn)程過(guò)程調(diào)用中間件、消息中間件、交易中間件、對(duì)象中間件。
中間件所包括的范圍十分廣泛,針對(duì)不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品。但至今中間件還沒(méi)有一個(gè)比較精確的定義,因此,在不同的角度或不同的層次上,對(duì)中間件的分類(lèi)也會(huì)有所不同。由于中間件需要屏蔽分布環(huán)境中異構(gòu)的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議,它必須能夠提供分布環(huán)境下的通訊服務(wù),我們將這種通訊服務(wù)稱(chēng)之為平臺(tái)?;谀康暮蛯?shí)現(xiàn)機(jī)制的不同,我們將平臺(tái)分為以下主要幾類(lèi):
1、遠(yuǎn)程過(guò)程調(diào)用中間件(Remote Procedure Call)2、面向消息的中間件(MesSAge-Oriented Middleware)3、對(duì)象請(qǐng)求代理中間件(object RequeST Brokers)
它們可向上提供不同形式的通訊服務(wù),包括同步、排隊(duì)、訂閱發(fā)布、廣播等等,在這些基本的通訊平臺(tái)之上,可構(gòu)筑各種框架,為應(yīng)用程序提供不同領(lǐng)域內(nèi)的服務(wù),如事務(wù)處理監(jiān)控器、分布數(shù)據(jù)訪問(wèn)、對(duì)象事務(wù)管理器OTM等。平臺(tái)為上層應(yīng)用屏蔽了異構(gòu)平臺(tái)的差異,而其上的框架又定義了相應(yīng)領(lǐng)域內(nèi)的應(yīng)用的系統(tǒng)結(jié)構(gòu)、標(biāo)準(zhǔn)的服務(wù)組件等,用戶(hù)只需告訴框架所關(guān)心的事件,然后提供處理這些事件的代碼。當(dāng)事件發(fā)生時(shí),框架則會(huì)調(diào)用用戶(hù)的代碼。用戶(hù)代碼不用調(diào)用框架,用戶(hù)程序也不必關(guān)心框架結(jié)構(gòu)、執(zhí)行流程、對(duì)系統(tǒng)級(jí)API的調(diào)用等,所有這些由框架負(fù)責(zé)完成。因此,基于中間件開(kāi)發(fā)的應(yīng)用具有良好的可擴(kuò)充性、易管理性、高可用性和可移植性。
各類(lèi)型中間件簡(jiǎn)要介紹
1、遠(yuǎn)程過(guò)程調(diào)用
遠(yuǎn)程過(guò)程調(diào)用是一種廣泛使用的分布式應(yīng)用程序處理方法。一個(gè)應(yīng)用程序使用RPC來(lái)“遠(yuǎn)程”執(zhí)行一個(gè)位于不同地址空間里的過(guò)程,并且從效果上看和執(zhí)行本地調(diào)用相同。事實(shí)上,一個(gè)RPC應(yīng)用分為兩個(gè)部分:server和Client。server提供一個(gè)或多個(gè)遠(yuǎn)程過(guò)程;client向server發(fā)出遠(yuǎn)程調(diào)用。server和client可以位于同一臺(tái)計(jì)算機(jī),也可以位于不同的計(jì)算機(jī),甚至運(yùn)行在不同的操作系統(tǒng)之上。它們通過(guò)網(wǎng)絡(luò)進(jìn)行通訊。相應(yīng)的stub和運(yùn)行支持提供數(shù)據(jù)轉(zhuǎn)換和通訊服務(wù),從而屏蔽不同的操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議。在這里RPC通訊是同步的。采用線程可以進(jìn)行異步調(diào)用。
在RPC模型中,client和server只要具備了相應(yīng)的RPC接口,并且具有RPC運(yùn)行支持,就可以完成相應(yīng)的互操作,而不必限制于特定的server。因此,RPC為client/server分布式計(jì)算提供了有力的支持。同時(shí),遠(yuǎn)程過(guò)程調(diào)用RPC所提供的是基于過(guò)程的服務(wù)訪問(wèn),client與server進(jìn)行直接連接,沒(méi)有中間機(jī)構(gòu)來(lái)處理請(qǐng)求,因此也具有一定的局限性。比如,RPC通常需要一些網(wǎng)絡(luò)細(xì)節(jié)以定位server;在client發(fā)出請(qǐng)求的同時(shí),要求server必須是活動(dòng)的等等。
2、面向消息的中間件
MOM指的是利用高效可靠的消息傳遞機(jī)制進(jìn)行平臺(tái)無(wú)關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來(lái)進(jìn)行分布式系統(tǒng)的集成。通過(guò)提供消息傳遞和消息排隊(duì)模型,它可在分布環(huán)境下擴(kuò)展進(jìn)程間的通信,并支持多通訊協(xié)議、語(yǔ)言、應(yīng)用程序、硬件和軟件平臺(tái)。目前流行的MOM中間件產(chǎn)品有IBM的MQSeries、BEA的MessageQ等。消息傳遞和排隊(duì)技術(shù)有以下三個(gè)主要特點(diǎn):1)、通訊程序可在不同的時(shí)間運(yùn)行 程序不在網(wǎng)絡(luò)上直接相互通話,而是間接地將消息放入消息隊(duì)列,因?yàn)槌绦蜷g沒(méi)有直接的聯(lián)系。所以它們不必同時(shí)運(yùn)行。消息放入適當(dāng)?shù)年?duì)列時(shí),目標(biāo)程序甚至根本不需要正在運(yùn)行;即使目標(biāo)程序在運(yùn)行,也不意味著要立即處理該消息。2)、對(duì)應(yīng)用程序的結(jié)構(gòu)沒(méi)有約束 在復(fù)雜的應(yīng)用場(chǎng)合中,通訊程序之間不僅可以是一對(duì)一的關(guān)系,還可以進(jìn)行一對(duì)多和多對(duì)一方式,甚至是上述多種方式的組合。多種通訊方式的構(gòu)造并沒(méi)有增加應(yīng)用程序的復(fù)雜性。3)、程序與網(wǎng)絡(luò)復(fù)雜性相隔離程序?qū)⑾⒎湃胂㈥?duì)列或從消息隊(duì)列中取出消息來(lái)進(jìn)行通訊,與此關(guān)聯(lián)的全部活動(dòng),比如維護(hù)消息隊(duì)列、維護(hù)程序和隊(duì)列之間的關(guān)系、處理網(wǎng)絡(luò)的重新啟動(dòng)和在網(wǎng)絡(luò)中移動(dòng)消息等是MOM的任務(wù),程序不直接與其它程序通話,并且它們不涉及網(wǎng)絡(luò)通訊的復(fù)雜性。
3、對(duì)象請(qǐng)求代理
隨著對(duì)象技術(shù)與分布式計(jì)算技術(shù)的發(fā)展,兩者相互結(jié)合形成了分布對(duì)象計(jì)算,并發(fā)展為當(dāng)今軟件技術(shù)的主流方向。1990年底,對(duì)象管理集團(tuán)OMG首次推出對(duì)象管理結(jié)構(gòu)OMA(ObjECt Management Architecture),對(duì)象請(qǐng)求代理(Object Request Broker)是這個(gè)模型的核心組件。它的作用在于提供一個(gè)通信框架,透明地在異構(gòu)的分布計(jì)算環(huán)境中傳遞對(duì)象請(qǐng)求。CORBA規(guī)范包括了ORB的所有標(biāo)準(zhǔn)接口。1991年推出的CORBA 1.1 定義了接口描述語(yǔ)言O(shè)MG IDL和支持Client/Server對(duì)象在具體的ORB上進(jìn)行互操作的API。CORBA 2.0 規(guī)范描述的是不同廠商提供的ORB之間的互操作。
對(duì)象請(qǐng)求代理(ORB)是對(duì)象總線,它在CORBA規(guī)范中處于核心地位,定義異構(gòu)環(huán)境下對(duì)象透明地發(fā)送請(qǐng)求和接收響應(yīng)的基本機(jī)制,是建立對(duì)象之間client/server關(guān)系的中間件。ORB使得對(duì)象可以透明地向其他對(duì)象發(fā)出請(qǐng)求或接受其他對(duì)象的響應(yīng),這些對(duì)象可以位于本地也可以位于遠(yuǎn)程機(jī)器。ORB攔截請(qǐng)求調(diào)用,并負(fù)責(zé)找到可以實(shí)現(xiàn)請(qǐng)求的對(duì)象、傳送參數(shù)、調(diào)用相應(yīng)的方法、返回結(jié)果等。 client對(duì)象并不知道同server對(duì)象通訊、激活或存儲(chǔ)server對(duì)象的機(jī)制,也不必知道server對(duì)象位于何處、它是用何種語(yǔ)言實(shí)現(xiàn)的、使用什么操作系統(tǒng)或其他不屬于對(duì)象接口的系統(tǒng)成分。
值得指出的是client和server角色只是用來(lái)協(xié)調(diào)對(duì)象之間的相互作用,根據(jù)相應(yīng)的場(chǎng)合,ORB上的對(duì)象可以是client,也可以是server,甚至兼有兩者。當(dāng)對(duì)象發(fā)出一個(gè)請(qǐng)求時(shí),它是處于client角色;當(dāng)它在接收請(qǐng)求時(shí),它就處于server角色。大部分的對(duì)象都是既扮演client角色又扮演server角色。另外由于ORB負(fù)責(zé)對(duì)象請(qǐng)求的傳送和server的管理,client和server之間并不直接連接,因此,與RPC所支持的單純的Client/Server結(jié)構(gòu)相比,ORB可以支持更加復(fù)雜的結(jié)構(gòu)。
4、事務(wù)處理監(jiān)控
事務(wù)處理監(jiān)控(Transaction processing monitors)最早出現(xiàn)在大型機(jī)上,為其提供支持大規(guī)模事務(wù)處理的可靠運(yùn)行環(huán)境。隨著分布計(jì)算技術(shù)的發(fā)展,分布應(yīng)用系統(tǒng)對(duì)大規(guī)模的事務(wù)處理提出了需求,比如商業(yè)活動(dòng)中大量的關(guān)鍵事務(wù)處理。事務(wù)處理監(jiān)控界于client和server之間,進(jìn)行事務(wù)管理與協(xié)調(diào)、負(fù)載平衡、失敗恢復(fù)等,以提高系統(tǒng)的整體性能。它可以被看作是事務(wù)處理應(yīng)用程序的“操作系統(tǒng)”??傮w上來(lái)說(shuō),事務(wù)處理監(jiān)控有以下功能:進(jìn)程管理,包括啟動(dòng)server進(jìn)程、為其分配任務(wù)、監(jiān)控其執(zhí)行并對(duì)負(fù)載進(jìn)行平衡。事務(wù)管理,即保證在其監(jiān)控下的事務(wù)處理的原子性、一致性、獨(dú)立性和持久性。通訊管理,為client和server之間提供了多種通訊機(jī)制,包括請(qǐng)求響應(yīng)、會(huì)話、排隊(duì)、訂閱發(fā)布和廣播等。
事務(wù)處理監(jiān)控能夠?yàn)榇罅康腸lient提供服務(wù),比如飛機(jī)定票系統(tǒng)。如果server為每一個(gè) client都分配其所需要的資源的話,那server將不堪重負(fù)(如圖2所示)。但實(shí)際上,在同一時(shí)刻并不是所有的client都需要請(qǐng)求服務(wù),而一旦某個(gè)client請(qǐng)求了服務(wù),它希望得到快速的響應(yīng)。事務(wù)處理監(jiān)控在操作系統(tǒng)之上提供一組服務(wù),對(duì)client請(qǐng)求進(jìn)行管理并為其分配相應(yīng)的服務(wù)進(jìn)程,使 server在有限的系統(tǒng)資源下能夠高效地為大規(guī)模的客戶(hù)提供服務(wù)。
標(biāo)簽: 中間件 Niddleware 定義 特點(diǎn) 分類(lèi)