張秋霞,李 焱
(1.黃河科技學(xué)院 現(xiàn)代教育技術(shù)中心,河南 鄭州450063;2.鄭州航空工業(yè)管理學(xué)院 計算中心,河南 鄭州450015)
自從上世紀90 年代以來,計算工業(yè)一直在使用如DCOM、CORBA 面向?qū)ο蟮闹虚g件平臺。在程序開發(fā)者使用分布式計算的性能指標,面向?qū)ο笾虚g件是十分重要的,性能高效的分布式應(yīng)用程序的需求一天天增長。而實現(xiàn)分布式應(yīng)用程序的效率,取決于選擇適當(dāng)?shù)姆植际接嬎阒虚g件技術(shù),使得程序開發(fā)過程中分布式計算中間件技術(shù)具有更好的性能。如何在多項技術(shù)中選擇最高效的分布式計算對象中間件技術(shù)以構(gòu)建高性能的分布式應(yīng)用是本文研究的重點。本文針對常用的四個分布式計算對象中間件技術(shù)對比分析,包括通用對象請求代理體系結(jié)構(gòu)(CORBA)[1],ZeroC 開發(fā)的互聯(lián)網(wǎng)通信引擎(ICE)[2],AIST 開發(fā)的HORB[3],微軟開發(fā)的Dot NET Remoting[4]。
迄今所做的研究工作大多是基于通用的分布式計算對象的中間件技術(shù),包括CORBA,RMI 和DCOM。文獻[5]比較了CORBA,RMI 和DCOM 三者在兩個應(yīng)用之間傳遞消息速度的性能。文獻[6]再次比較了CORBA,DCOM 和RMI 三者的性能,但是使用了不同的性能指標。文獻[7]對基于Java 的分布式對象中間件技術(shù),其中包括RMI 和RMI-IIOP 做了性能分析、比較和優(yōu)化。文獻[8]對RMI 的性能效率做了廣泛的研究,并且與其它分布式對象中間件做了比較。遵循不同的性能指標選擇最合適的中間件會讓開發(fā)人員開發(fā)出高效的分布式應(yīng)用,中間件需降低計算和延遲時間以便達到程序開發(fā)所要求的性能水平,使能在分布式應(yīng)用中產(chǎn)生較低的額外開銷[9-12]。以前還沒有對分布式對象中間件技術(shù)研究工作根據(jù)不同的性能指標作過比較。本文通過性能評價檢測,對選定的四種分布式計算對象中間件技術(shù)進行比較。
中間件技術(shù)的分類很多,本文挑選常用的中間件ICE、Dot NET Remoting、CORBA、HORB 進行性能評價和比較。
ICE (Internet Communications Engine)是一種面向?qū)ο蟮闹虚g件平臺[13]。從根本上說,這意味著ICE 為構(gòu)建面向?qū)ο蟮目蛻簦?wù)器應(yīng)用提供了工具、API和庫支持。ICE 應(yīng)用適合在異種環(huán)境中使用:客戶和服務(wù)器可以用不同的編程語言編寫,可以運行在不同的操作系統(tǒng)和機器架構(gòu)上,并且可以使用多種網(wǎng)絡(luò)技術(shù)進行通信。無論部署環(huán)境如何,這些應(yīng)用的源碼都是可移植的。ICE 已經(jīng)成為一個新的面向?qū)ο蟮闹虚g件技術(shù),與傳統(tǒng)的面向?qū)ο蟮腄COM 和CORBA 技術(shù)相比具有先進的功能。隨著面向?qū)ο蟮闹虚g件的發(fā)展,分布式應(yīng)用也進入了新的計算模式[14]。ICE 中間件平臺處理任何中間件提供很多的重要功能,例如封送處理和解封送處理映射邏輯對象地址到物理傳輸終點,根據(jù)本機C/S 模式改變數(shù)據(jù)的表述,并且根據(jù)需求自動啟動服務(wù)器。ICE 架構(gòu)由不同的組件組成,其中包括ICE、Slice、代理代碼、框架代碼、對象適配器和ICE 協(xié)議[15]。
Dot NET Remoting 可以使我們建立基于. NET Framework 的分布式應(yīng)用以解決一些分布式應(yīng)用問題。Dot NET Remoting 為分布式對象提供了一個基礎(chǔ)框架,通過它,我們建立使用對象為網(wǎng)絡(luò)通信應(yīng)用。Dot NET Remoting 組成部件包括客戶端對象、服務(wù)器對象、代理對象、通道和格式化器。
CORBA (Common Object Request Broker Architecture)是由對象管理組織(OMG)開發(fā)的標準分布式對象架構(gòu)。CORBA 是一個分布式的面向?qū)ο蟮目蛻魴C/服務(wù)器平臺,用于構(gòu)建基于對象的分布式應(yīng)用。CORBA 包括面向?qū)ο蟮倪h程過程調(diào)用(RPC)機制,提供了基本的遠程過程調(diào)用服務(wù)。CORBA 構(gòu)架的主要部件包括對象請求代理(ORB)、IDL stubs、ORB接口和對象適配器。
CORBA 對象引用不透明性存在一定的問題:它不僅需要更加復(fù)雜的API 和運行支持,還會妨礙構(gòu)建現(xiàn)實的系統(tǒng)。為此,CORBA 增加了像 corbaloc 和corbaname 這樣的機制,以及用于進行引用比較的is_equivalent 和hash 操作。所有這些機制都降低了對象引用的不透明性,但CORBA 平臺的其他部分仍試圖維持引用是不透明的。導(dǎo)致開發(fā)者引用既不是完全不透明的、也不是完全透明的,所帶來的混亂和復(fù)雜性相當(dāng)大。
HORB 是輕量型分布式計算中間件,它擴展了Java 網(wǎng)絡(luò)計算功能,以便開發(fā)基于Java 的分布式應(yīng)用。用HORB 編寫的程序可以在任何操作系統(tǒng)上運行。這是從Java 繼承來的特點,HORB 基于java 編寫的程序在許多機器上運行往往不需要重新編譯。鑒于HORB 程序可以在許多不同類型機器上運行的特點,程序員可以方便地利用HORB 的可移植性。HORB 的部件包括代理對象、基礎(chǔ)對象、對象請求代理(ORB)[4]。
本文通過設(shè)置用戶-服務(wù)器環(huán)境進行中間件技術(shù)的性能評價。測試環(huán)境由兩臺電腦組成,一臺作為客戶端服務(wù)器,另一臺作為服務(wù)器,兩者由一個100 Mbit的網(wǎng)絡(luò)連接。操作系統(tǒng)選用Windows XP 操作系統(tǒng),該系統(tǒng)可以承載實驗所需軟件的所有需求。測試中使用的軟件Sun JDK1.5 來實現(xiàn)CORBA,HORB 和ICE 的安裝啟動,Dot NET Framework 平臺被用來測試基于TCP 的Dot NET Remoting,最后使用可檢測額外開銷的分析器,其中有ethereal 、hpjmeter 分析器和CLR 分析器。本文對選定的中間件技術(shù)ICE、CORBA、HORB和Dot NET Remoting 進行測試結(jié)果進行了比較。
對中間件進行測試可分為兩大類:第一類是額外開銷測試,第二個是往返延遲測試。針對每個測試類別中進行兩次測試:首先是原始數(shù)據(jù)類型測試(這是基于單一數(shù)據(jù)的特定數(shù)據(jù)類型值),其次是在測試中使用數(shù)組測試(這是基于使用大量數(shù)據(jù)進行的測試)。在測試往返延遲的原始數(shù)據(jù)的同時,檢查中間件往返延遲的可擴展性因子,并討論測試的結(jié)果。
開銷測試的根本目的在于檢查對于實際傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)有多少額外的網(wǎng)絡(luò)流量是由中間件技術(shù)產(chǎn)生的。
2.2.1 原始數(shù)據(jù)類型測試
將不同數(shù)據(jù)類型的數(shù)據(jù)值傳遞到遠端,這個測試反映了中間件技術(shù)在額外開銷方面的性能。圖1 展示的是原始數(shù)據(jù)類型和空調(diào)用方法的開銷測量值。我們可以觀察到,在不同的分布式計算對象中間件技術(shù)中,所有原始數(shù)據(jù)類型產(chǎn)生的開銷取決于數(shù)據(jù)類型位的大小。在所有分布式計算對象中間件技術(shù)中,Long 和Double 原始數(shù)據(jù)類型相比其他數(shù)據(jù)類型產(chǎn)生更高的開銷。這是因為Long 和Double 型數(shù)據(jù)在所有分布式計算對象中間件技術(shù)中都是用64 bit 表示的。比較所選擇的中間件技術(shù)的整體性能,我們可以看到與其他中間技術(shù)相比Java IDL 所產(chǎn)生的開銷最大。其中最重要的原因是,CORBA 的IIOP 協(xié)議使用公共數(shù)據(jù)表示(CDR)。并且,CDR 的padding 規(guī)則產(chǎn)生較高的網(wǎng)絡(luò)開銷。
圖1 額外開銷(原始數(shù)據(jù)類型)
另一方面,ICE 在網(wǎng)絡(luò)額外開銷方面表現(xiàn)得較好,它產(chǎn)生的網(wǎng)絡(luò)開銷比CORBA 低50%。其原因是ICE的編碼規(guī)則非常簡潔,從而降低了額外開銷。從實驗中我們所看到的結(jié)果,HORB 比Dot NET Remoting 表現(xiàn)要好,因為HORB 不使用任何類型的鏈接復(fù)用,而鏈接復(fù)用會產(chǎn)生過多的數(shù)據(jù)復(fù)制,增加網(wǎng)絡(luò)的開銷。HORB 沒有ICE 表現(xiàn)好是由于HORB 的編碼規(guī)則表現(xiàn)最差。
2.2.2 數(shù)組檢測
數(shù)組測試的前提是使用相同的原始數(shù)據(jù)測試。并且,客戶端應(yīng)用對選定的原始數(shù)據(jù)類型可以設(shè)置不同的數(shù)組大小。本文選擇Double 數(shù)據(jù)類型進行陳列實驗測試,通過原始數(shù)據(jù)類型測試表明在四個中間件技術(shù)中Double 原始數(shù)據(jù)類型表現(xiàn)最差,如圖1 所示。我們所評價的分布式計算對象中間件技術(shù)的性能測試是基于不同數(shù)組大小的Double 數(shù)據(jù)類型。在圖2 中,可以根據(jù)數(shù)組傳送觀察中間件技術(shù)的性能。如果比較圖1 和圖2 會發(fā)現(xiàn)在額外開銷方面Dot NET Remoting 已經(jīng)替代了CORBA 的位置,圖形顯示Dot NET Remoting產(chǎn)生的開銷比表現(xiàn)最好的ICE 多4 倍,究其原因是Dot NET Remoting 處理大型數(shù)據(jù)的效率偏低。因此,當(dāng)我們增加數(shù)組的大小,Dot NET Remoting 的額外開銷也隨之增加,如圖2 所示。
ICE 與所有其他的分布式計算對象中間件技術(shù)相比顯示出最佳的性能,其背后的原因是對比其它所有中間件技術(shù),ICE 使用了更簡潔的編碼技術(shù)。
圖2 額外開銷(不同數(shù)組的大小)
這些測試的原因是要檢查依據(jù)中間件技術(shù)執(zhí)行完整的調(diào)用方法每調(diào)用一次需要多少ms。在原始數(shù)據(jù)類型檢測中,本文檢測基于在多個客戶端負載下,分布式計算對象中間件技術(shù)能有多高的往返延遲性能。因為可擴展性也是一項檢查中間件技術(shù)性能的重要性能指標。
2.3.1 原始數(shù)據(jù)類型檢測
原始數(shù)據(jù)類型檢測用來選擇較高的中間件技術(shù)往返遲延性能。采用發(fā)送單、雙精度值的原始數(shù)據(jù)類型值。借助越來越多的客戶端需求數(shù),來測試中間件的可擴展性因子。從圖3 可以看到,相比所有其他分布式計算對象中間件技術(shù)HORB 呈現(xiàn)出最佳的性能。
圖3 往返延遲(單精度數(shù)據(jù)值傳送)
從圖3 分析,隨著客戶端數(shù)目的增加,HORB 與其它中間件技術(shù)之間的性能差異也越來越大。HOBR 產(chǎn)生的往返延遲比表現(xiàn)最差的CORBA 少4 倍。HORB中間件技術(shù)這種性能背后的原因是HORB 使用系統(tǒng)對 象 序 列,包 括 ObjectOutputStream 和ObjectInputStream,其中ObjectOutputStream 本身產(chǎn)生了緩沖。
從實驗結(jié)果分析,序列化過程比其它中間件序列花費更少的時間。另一方面,Java CORBA 在每調(diào)用消耗ms 數(shù)方面的性能表現(xiàn)最差,因為CORBA 在CDR的過程中使用padding,使得序列化過程減緩。因此所有其它的分布式計算對象中間件相比,CORBA 的往返延遲性能最差。相比Dot NET Remoting,ICE 每調(diào)用所用ms 數(shù)最小。我們已收集的結(jié)果顯示,在序列化的過程中ICE 比Dot NET Remoting 所用時間更少。這說明ICE 序列化過程比Dot NET Remoting 更快。
2.3.2 數(shù)組測試
這個檢測的目的在于,當(dāng)用戶發(fā)送大量用數(shù)組傳遞的數(shù)據(jù)時,檢查往返延遲的性能。這個測試使用不同大小的Double 數(shù)據(jù)類型數(shù)組。從圖4 中我們能清晰地看到,Dot NET Remoting 在處理大尺寸數(shù)據(jù)方面表現(xiàn)最差,根據(jù)我們已收集到的數(shù)據(jù)來看是因為序列化過程花費了更多的時間。相比HORB,它大約有5倍的往返延遲。另一方面,由于序列化的效率,HORB的效率結(jié)果最好。ICE 比 CORBA 和 Dot NET Remoting 的測試結(jié)果更好。
圖4 往返延遲(數(shù)組傳遞)
本文針對分布式計算對象中間件技術(shù)ICE、HOBR、Dot NET Remoting 和CORBA 的額外開銷和往返延遲這兩項性能指標做了詳細的性能評價和比較。在不同的測試環(huán)境下測試了這些性能指標。開銷測試表明,影響分布式計算對象中間件技術(shù)開銷的因素有數(shù)據(jù)復(fù)制、簡潔或是復(fù)雜的編碼規(guī)則。在用任意數(shù)據(jù)類型和任意數(shù)據(jù)尺寸的額外開銷測試中,相比較其他的中間件技術(shù)ICE 的測試結(jié)果更好。在往返延遲測試中,因為對序列化的過程使用了外部序列化器,HOEB具有低的往返延遲。借助分析器收集的結(jié)果表明,HORB 在序列化過程中花費的時間比ICE 少。根據(jù)實驗結(jié)果,我們給分布式應(yīng)用開發(fā)建議,在額外開銷方面ICE 是最有效的中間件。對時間要求嚴格的分布式應(yīng)用,HORB 是對構(gòu)建時間要求嚴格的分布式應(yīng)用的最佳選擇。
[1] 車文富. CORBA 與OLE/COM 互操作實現(xiàn)技術(shù)[J].計算機工程與應(yīng)用,2007,13(2):104-106.
[2] 王宇. 基于ICE 的安全中間件的研究與實現(xiàn)[J]. 現(xiàn)代計算機(專業(yè)版),2011,9 (5):71-73.
[3] http://horb.aist.go.jp/horb/doc/guide
[4] NONG Sun-bo. Research of a database platform based on EMS-API CIM[D]. Beijing:Tsinghua University,2001:99-101.
[5] Florian Mircea Boain Aan Rares,RMI VERSUS CORBA. A MessageTransfer Speed Comparison[J]. Stidia University,2004,1(1):104-107.
[6] Bracho A,Matteo A,Metzner Ch. ATanxonomy For Comparing Distributed Object Technologies[J]. CLEI Electronic,2009,2 (2):58-61.
[7] Matjaz B Juric,Ivan Rozman,Alan P Stevens,Marjan Hericko,Simon Nash. Java 2 Distributed Object Models Performance Analysis[J],Comparison and Optimization,2008 1(1):381-385.
[8] Sanjay P Ahuja,Renato Quintao. Performance Evaluation of Java RMI: A Distributed Object Architecture for Internet Based Applications”[C]∥8th International Symposium on Modeling,Analysis and Simulation of Computer Telecommunication Systems,2009:125-129.
[9] (美)戴維斯. 開源SOA[M].高宇翔譯.北京:電子工業(yè)出版社,2010.
[10] 孔 浩,姜 娜.URP 中基于POX 的業(yè)務(wù)系統(tǒng)集成模型的設(shè)計與實現(xiàn)[J].長春工程學(xué)院學(xué)報,2012,13(2):103-105.
[11] (美)布 朗.SOA 實踐指南:應(yīng)用整體架構(gòu).[M]. 胡鍵譯. 北京:機械工業(yè)出版社,2009.
[12] 孔 浩,顧慶傳.利用SOA 對高校URP 業(yè)務(wù)進行標準化設(shè)計的研究[J]. 昆明理工學(xué)院學(xué)報,2012 (3):86-88.
[13] (美)休依特.Java SOA Cookbook[M]. 孫 燕譯. 北京:清華大學(xué)出版社,2011.
[14] 梁金明. 基于Web 的畢業(yè)設(shè)計管理與監(jiān)控系統(tǒng)設(shè)計[J]. 四川理工學(xué)院學(xué)報(自然科學(xué)版),2011,24(5):537-540.
[15] 張橫云,何海濤.SOA 體系的安全研究與設(shè)計[J]. 四川理工學(xué)院學(xué)報(自然科學(xué)版),2009,22(1):44-47.