RMI卿城、Hessian枚钓、Burlap、Httpinvoker藻雪、WebService的比較(轉(zhuǎn))

一秘噪、綜述

本文比較了RMI、Hessian勉耀、Burlap指煎、Httpinvoker蹋偏、WebService5這種通訊協(xié)議的在不同的數(shù)據(jù)結(jié)構(gòu)和不同數(shù)據(jù)量時的傳輸性能。

RMI是java語言本身提供的遠(yuǎn)程通訊協(xié)議至壤,穩(wěn)定高效威始,是EJB的基礎(chǔ)。但它只能用于JAVA程序之間的通訊像街。

Hessian和Burlap是caucho公司提供的開源協(xié)議黎棠,基于HTTP傳輸,服務(wù)端不用開防火墻端口镰绎。協(xié)議的規(guī)范公開脓斩,可以用于任意語言。

Httpinvoker是SpringFramework提供的遠(yuǎn)程通訊協(xié)議畴栖,只能用于JAVA程序間的通訊随静,且服務(wù)端和客戶端必須使用SpringFramework。

Web service是連接異構(gòu)系統(tǒng)或異構(gòu)語言的首選協(xié)議吗讶,它使用SOAP形式通訊燎猛,可以用于任何語言,目前的許多開發(fā)工具對其的支持也很好照皆。

測試結(jié)果顯示重绷,幾種協(xié)議的通訊效率依次為:

RMI > Httpinvoker >= Hessian >> Burlap >> web service

RMI不愧是JAVA的首選遠(yuǎn)程調(diào)用協(xié)議,非常高效穩(wěn)定膜毁,特別是在大數(shù)據(jù)量的情況下昭卓,與其他通訊協(xié)議的差距尤為明顯。

HttpInvoker使用java的序列化技術(shù)傳輸對象爽茴,與RMI在本質(zhì)上是一致的葬凳。從效率上看,兩者也相差無幾室奏,HttpInvoker與RMI的傳輸時間基本持平火焰。

Hessian在傳輸少量對象時,比RMI還要快速高效胧沫,但傳輸數(shù)據(jù)結(jié)構(gòu)復(fù)雜的對象或大量數(shù)據(jù)對象時昌简,較RMI要慢20%左右。

Burlap僅在傳輸1條數(shù)據(jù)時速度尚可绒怨,通常情況下纯赎,它的毫?xí)r是RMI的3倍。

Web Service的效率低下是眾所周知的南蹂,平均來看犬金,Web Service的通訊毫?xí)r是RMI的10倍。

二、結(jié)果分析

1晚顷、直接調(diào)用

直接調(diào)用的所有毫?xí)r都接近0峰伙,這說明程序處理幾乎沒有花費(fèi)時間,記錄的全部時間都是遠(yuǎn)程調(diào)用耗費(fèi)的该默。

2瞳氓、RMI調(diào)用

與設(shè)想的一樣,RMI理所當(dāng)然是最快的栓袖,在幾乎所有的情況下匣摘,它的毫?xí)r都是最少的。特別是在數(shù)據(jù)結(jié)構(gòu)復(fù)雜裹刮,數(shù)據(jù)量大的情況下音榜,與其他協(xié)議的差距尤為明顯。

為了充分發(fā)揮RMI的性能必指,另外做了測試類囊咏,不使用Spring,用原始的RMI形式(繼承UnicastRemoteObject對象)提供服務(wù)并遠(yuǎn)程調(diào)用塔橡,與Spring對POJO包裝成的RMI進(jìn)行效率比較。結(jié)果顯示:兩者基本持平霜第,Spring提供的服務(wù)還稍快些葛家。

初步認(rèn)為,這是因為Spring的代理和緩存機(jī)制比較強(qiáng)大泌类,節(jié)省了對象重新獲取的時間癞谒。

3、Hessian調(diào)用

caucho公司的resin服務(wù)器號稱是最快的服務(wù)器刃榨,在java領(lǐng)域有一定的知名度弹砚。Hessian做為resin的組成部分,其設(shè)計也非常精簡高效枢希,實際運(yùn)行情況也證明了這一點(diǎn)桌吃。平均來看,Hessian較RMI要慢20%左右苞轿,但這只是在數(shù)據(jù)量特別大茅诱,數(shù)據(jù)結(jié)構(gòu)很復(fù)雜的情況下才能體現(xiàn)出來,中等或少量數(shù)據(jù)時搬卒,Hessian并不比RMI慢瑟俭。

Hessian的好處是精簡高效,可以跨語言使用契邀,而且協(xié)議規(guī)范公開摆寄,我們可以針對任意語言開發(fā)對其協(xié)議的實現(xiàn)。目前已有實現(xiàn)的語言有:java, c++, .net, python, ruby。還沒有delphi的實現(xiàn)微饥。

另外锐帜,Hessian與WEB服務(wù)器結(jié)合非常好,借助WEB服務(wù)器的成熟功能畜号,在處理大量用戶并發(fā)訪問時會有很大優(yōu)勢缴阎,在資源分配,線程排隊简软,異常處理等方面都可以由成熟的WEB服務(wù)器保證蛮拔。而RMI本身并不提供多線程的服務(wù)器。而且痹升,RMI需要開防火墻端口建炫,Hessian不用。

4疼蛾、Burlap調(diào)用

Burlap與Hessian都是caucho公司的開源產(chǎn)品肛跌,只不過Hessian采用二進(jìn)制的方式,而Burlap采用xml的格式察郁。

測試結(jié)果顯示衍慎,Burlap在數(shù)據(jù)結(jié)構(gòu)不復(fù)雜,數(shù)據(jù)量中等的情況下皮钠,效率還是可以接受的稳捆,但如果數(shù)據(jù)量大,效率會急劇下降麦轰。平均計算乔夯,Burlap的調(diào)用毫?xí)r是RMI的3倍。

我認(rèn)為款侵,其效率低有兩方面的原因末荐,一個是XML數(shù)據(jù)描述內(nèi)容太多,同樣的數(shù)據(jù)結(jié)構(gòu)新锈,其傳輸量要大很多甲脏;另一方面,眾所周知壕鹉,對xml的解析是比較費(fèi)資源的剃幌,特別對于大數(shù)據(jù)量情況下更是如此。

5晾浴、HttpInvoker調(diào)用

HttpInvoker是SpringFramework提供的JAVA遠(yuǎn)程調(diào)用方法负乡,使用java的序列化機(jī)制處理對象的傳輸。從測試結(jié)果看脊凰,其效率還是可以的抖棘,與RMI基本持平茂腥。

不過,它只能用于JAVA語言之間的通訊切省,而且最岗,要求客戶端和服務(wù)端都使用SPRING框架。

另外朝捆,HttpInvoker 并沒有經(jīng)過實踐的檢驗般渡,目前還沒有找到應(yīng)用該協(xié)議的項目。

6芙盘、web service調(diào)用

本次測試選用了apache的AXIS組件作為WEB SERVICE的實現(xiàn)驯用,AXIS在WEB SERVICE領(lǐng)域相對成熟老牌。

為了僅測試數(shù)據(jù)傳輸和編碼儒老、解碼的時間蝴乔,客戶端和服務(wù)端都使用了緩存,對象只需實例化一次驮樊。但是薇正,測試結(jié)果顯示,web service的效率還是要比其他通訊協(xié)議慢10倍囚衔。

如果考慮到多個引用指向同一對象的傳輸情況挖腰,web service要落后更多。因為RMI佳魔,Hessian等協(xié)議都可以傳遞引用曙聂,而web service有多少個引用,就要復(fù)制多少份對象實體鞠鲜。

Web service傳輸?shù)娜哂嘈畔⑦^多是其速度慢的原因之一,監(jiān)控發(fā)現(xiàn)断国,同樣的訪問請求贤姆,描述相同的數(shù)據(jù),web service返回的數(shù)據(jù)量是hessian協(xié)議的6.5倍稳衬。另外霞捡,WEB SERVICE的處理也很毫?xí)r,目前的xml解析器效率普遍不高薄疚,處理xml <-> bean很毫資源碧信。從測試結(jié)果看,異地調(diào)用比本地調(diào)用要快街夭,也從側(cè)面說明了其毫?xí)r主要用在編碼和解碼xml文件上砰碴。這比冗余信息更為嚴(yán)重,冗余信息占用的只是網(wǎng)絡(luò)帶寬板丽,而每次調(diào)用的資源耗費(fèi)直接影響到服務(wù)器的負(fù)載能力呈枉。(MS的工程師曾說過,用WEB SERVICE不能負(fù)載100個以上的并發(fā)用戶。)

測試過程中還發(fā)現(xiàn)猖辫,web service編碼不甚方便酥泞,對非基本類型需要逐個注冊序列化和反序列化類,很麻煩啃憎,生成stub更累芝囤,不如spring + RMI/hessian處理那么流暢簡潔。而且辛萍,web service不支持集合類型悯姊,只能用數(shù)組,不方便叹阔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挠轴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子耳幢,更是在濱河造成了極大的恐慌岸晦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睛藻,死亡現(xiàn)場離奇詭異启上,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)店印,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門冈在,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人按摘,你說我怎么就攤上這事包券。” “怎么了炫贤?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵溅固,是天一觀的道長。 經(jīng)常有香客問我兰珍,道長侍郭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任掠河,我火速辦了婚禮亮元,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唠摹。我一直安慰自己爆捞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布跃闹。 她就那樣靜靜地躺著嵌削,像睡著了一般毛好。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苛秕,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天肌访,我揣著相機(jī)與錄音,去河邊找鬼艇劫。 笑死吼驶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的店煞。 我是一名探鬼主播蟹演,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼顷蟀!你這毒婦竟也來了酒请?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鸣个,失蹤者是張志新(化名)和其女友劉穎羞反,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囤萤,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昼窗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涛舍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄惊。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖富雅,靈堂內(nèi)的尸體忽然破棺而出掸驱,到底是詐尸還是另有隱情,我是刑警寧澤没佑,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布亭敢,位于F島的核電站,受9級特大地震影響图筹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜让腹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一远剩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骇窍,春花似錦瓜晤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驱犹。三九已至,卻和暖如春足画,著一層夾襖步出監(jiān)牢的瞬間雄驹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工淹辞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留医舆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓象缀,卻偏偏與公主長得像蔬将,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咧栗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容