版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Dubbox:來(lái)自當(dāng)當(dāng)網(wǎng)的SOA服務(wù)框架\o"Dubbo:來(lái)自于阿里巴巴的分布式服務(wù)框架"Dubbo是一個(gè)來(lái)自阿里巴巴的開(kāi)源分布式服務(wù)框架,當(dāng)當(dāng)根據(jù)自身的需求,為Dubbo實(shí)現(xiàn)了一些新的功能,包括REST風(fēng)格遠(yuǎn)程調(diào)用、Kryo/FST序列化等等。并將其命名為Dubbox(即DubboeXtensions)。Dubbox主要的新功能包括:一、支持REST風(fēng)格遠(yuǎn)程調(diào)用(HTTP+JSON/XML)dubbo支持多種遠(yuǎn)程調(diào)用方式,例如dubboRPC(二進(jìn)制序列化+tcp協(xié)議)、httpinvoker(二進(jìn)制序列化+http協(xié)議,至少在開(kāi)源版本沒(méi)發(fā)現(xiàn)對(duì)文本序列化的支持)、hessian(二進(jìn)制序列化+http協(xié)議)、WebServices(文本序列化+http協(xié)議)等等,但缺乏對(duì)當(dāng)今特別流行的REST風(fēng)格遠(yuǎn)程調(diào)用(文本序列化+http協(xié)議)的支持。dubbox基于非常成熟的JBossRestEasy框架,在dubbo中實(shí)現(xiàn)了REST風(fēng)格(HTTP+JSON/XML)的遠(yuǎn)程調(diào)用,以顯著簡(jiǎn)化企業(yè)內(nèi)部的跨語(yǔ)言交互,同時(shí)顯著簡(jiǎn)化企業(yè)對(duì)外的OpenAPI、無(wú)線API甚至AJAX服務(wù)端等等的開(kāi)發(fā)。事實(shí)上,這個(gè)REST調(diào)用也使得Dubbo可以對(duì)當(dāng)今特別流行的“微服務(wù)”架構(gòu)提供基礎(chǔ)性支持。另外,REST調(diào)用也達(dá)到了比較高的性能,在基準(zhǔn)測(cè)試下,HTTP+JSON與Dubbo2.x默認(rèn)的RPC協(xié)議(即TCP+Hessian2二進(jìn)制序列化)之間只有1.5倍左右的差距。REST的優(yōu)點(diǎn)(摘自維基百科):可更高效利用緩存來(lái)提高響應(yīng)速度通訊本身的無(wú)狀態(tài)性可以讓不同的服務(wù)器的處理一系列請(qǐng)求中的不同請(qǐng)求,提高服務(wù)器的擴(kuò)展性瀏覽器即可作為客戶端,簡(jiǎn)化軟件需求相對(duì)于其他疊加在HTTP協(xié)議之上的機(jī)制,REST的軟件依賴性更小不需要額外的資源發(fā)現(xiàn)機(jī)制在軟件技術(shù)演進(jìn)中的長(zhǎng)期的兼容性更好基于簡(jiǎn)單的文本格式消息和通用的HTTP協(xié)議,使REST具備極廣的適用性,幾乎所有語(yǔ)言和平臺(tái)都對(duì)它提供支持,同時(shí)其學(xué)習(xí)和使用的門檻也較低。在dubbo中支持REST,可以為當(dāng)今多數(shù)主流的遠(yuǎn)程調(diào)用場(chǎng)景都帶來(lái)好處:顯著簡(jiǎn)化企業(yè)內(nèi)部的異構(gòu)系統(tǒng)之間的(跨語(yǔ)言)調(diào)用。此處主要針對(duì)這種場(chǎng)景:dubbo的系統(tǒng)做服務(wù)提供端,其他語(yǔ)言的系統(tǒng)(也包括某些不基于dubbo的java系統(tǒng))做服務(wù)消費(fèi)端,兩者通過(guò)HTTP和文本消息進(jìn)行通信。即使相比Thrift、ProtoBuf等二進(jìn)制跨語(yǔ)言調(diào)用方案,REST也有自己獨(dú)特的優(yōu)勢(shì)(詳見(jiàn)后面討論)顯著簡(jiǎn)化對(duì)外OpenAPI(開(kāi)放平臺(tái))的開(kāi)發(fā)。既可以用dubbo來(lái)開(kāi)發(fā)專門的OpenAPI應(yīng)用,也可以將原內(nèi)部使用的dubboservice直接“透明”發(fā)布為對(duì)外的OpenRESTAPI(當(dāng)然dubbo本身未來(lái)最好可以較透明的提供諸如權(quán)限控制、頻次控制、計(jì)費(fèi)等諸多功能)顯著簡(jiǎn)化手機(jī)(平板)APP或者PC桌面客戶端開(kāi)發(fā)。類似于2,既可以用dubbo來(lái)開(kāi)發(fā)專門針對(duì)無(wú)線或者桌面的服務(wù)器端,也可以將原內(nèi)部使用的dubboservice直接“透明”的暴露給手機(jī)APP或桌面程序。當(dāng)然在有些項(xiàng)目中,手機(jī)或桌面程序也可以直接訪問(wèn)以上場(chǎng)景2中所述的OpenAPI。顯著簡(jiǎn)化瀏覽器AJAX應(yīng)用的開(kāi)發(fā)。類似于2,既可以用dubbo來(lái)開(kāi)發(fā)專門的AJAX服務(wù)器端,也可以將原內(nèi)部使用的dubboservice直接“透明”的暴露給瀏覽器中JavaScript。當(dāng)然,很多AJAX應(yīng)用更適合與web框架協(xié)同工作,所以直接訪問(wèn)dubboservice在很多web項(xiàng)目中未必是一種非常優(yōu)雅的架構(gòu)。為企業(yè)內(nèi)部的dubbo系統(tǒng)之間(即服務(wù)提供端和消費(fèi)端都是基于dubbo的系統(tǒng))提供一種基于文本的、易讀的遠(yuǎn)程調(diào)用方式。一定程度簡(jiǎn)化dubbo系統(tǒng)對(duì)其它異構(gòu)系統(tǒng)的調(diào)用??梢杂妙愃芼ubbo的簡(jiǎn)便方式“透明”的調(diào)用非dubbo系統(tǒng)提供的REST服務(wù)(不管服務(wù)提供端是在企業(yè)內(nèi)部還是外部)需要指出的是,1~3是dubbo的REST調(diào)用最有價(jià)值的三種應(yīng)用場(chǎng)景,并且為dubbo添加REST調(diào)用,其最主要到目的也是面向服務(wù)的提供端,即開(kāi)發(fā)REST服務(wù)來(lái)提供給非dubbo的(異構(gòu))消費(fèi)端。歸納起來(lái),所有應(yīng)用場(chǎng)景如下圖所示:二、支持基于Kryo和FST的Java高效序列化實(shí)現(xiàn)dubboRPC是dubbo體系中最核心的一種高性能、高吞吐量的遠(yuǎn)程調(diào)用方式,簡(jiǎn)單的說(shuō):長(zhǎng)連接:避免了每次調(diào)用新建TCP連接,提高了調(diào)用的響應(yīng)速度多路復(fù)用:?jiǎn)蝹€(gè)TCP連接可交替?zhèn)鬏敹鄠€(gè)請(qǐng)求和響應(yīng)的消息,降低了連接的等待閑置時(shí)間,從而減少了同樣并發(fā)數(shù)下的網(wǎng)絡(luò)連接數(shù),提高了系統(tǒng)吞吐量。dubboRPC主要用于兩個(gè)dubbo系統(tǒng)之間作遠(yuǎn)程調(diào)用,特別適合高并發(fā)、小數(shù)據(jù)的互聯(lián)網(wǎng)場(chǎng)景。而序列化對(duì)于遠(yuǎn)程調(diào)用的響應(yīng)速度、吞吐量、網(wǎng)絡(luò)帶寬消耗等同樣也起著至關(guān)重要的作用,是我們提升分布式系統(tǒng)性能的最關(guān)鍵因素之一。在dubboRPC中,同時(shí)支持多種序列化方式,例如:dubbo序列化:阿里尚未開(kāi)發(fā)成熟的高效java序列化實(shí)現(xiàn),阿里不建議在生產(chǎn)環(huán)境使用它hessian2序列化:hessian是一種跨語(yǔ)言的高效二進(jìn)制序列化方式。但這里實(shí)際不是原生的hessian2序列化,而是阿里修改過(guò)的hessianlite,它是dubboRPC默認(rèn)啟用的序列化方式j(luò)son序列化:目前有兩種實(shí)現(xiàn),一種是采用的阿里的fastjson庫(kù),另一種是采用dubbo中自己實(shí)現(xiàn)的簡(jiǎn)單json庫(kù),但其實(shí)現(xiàn)都不是特別成熟,而且json這種文本序列化性能一般不如上面兩種二進(jìn)制序列化。java序列化:主要是采用JDK自帶的Java序列化實(shí)現(xiàn),性能很不理想。在通常情況下,這四種主要序列化方式的性能從上到下依次遞減。對(duì)于dubboRPC這種追求高性能的遠(yuǎn)程調(diào)用方式來(lái)說(shuō),實(shí)際上只有1、2兩種高效序列化方式比較般配,而第1個(gè)dubbo序列化由于還不成熟,所以實(shí)際只剩下2可用,所以dubboRPC默認(rèn)采用hessian2序列化。但hessian是一個(gè)比較老的序列化實(shí)現(xiàn)了,而且它是跨語(yǔ)言的,所以不是單獨(dú)針對(duì)java進(jìn)行優(yōu)化的。而dubboRPC實(shí)際上完全是一種JavatoJava的遠(yuǎn)程調(diào)用,其實(shí)沒(méi)有必要采用跨語(yǔ)言的序列化方式(當(dāng)然肯定也不排斥跨語(yǔ)言的序列化)。最近幾年,各種新的高效序列化方式層出不窮,不斷刷新序列化性能的上限,最典型的包括:專門針對(duì)Java語(yǔ)言的:Kryo,F(xiàn)ST等等跨語(yǔ)言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等這些序列化方式的性能多數(shù)都顯著優(yōu)于hessian2(甚至包括尚未成熟的dubbo序列化)。有鑒于此,我們?yōu)閐ubbo引入Kryo和FST這兩種高效Java序列化實(shí)現(xiàn),來(lái)逐步取代hessian2。其中,Kryo是一種非常成熟的序列化實(shí)現(xiàn),已經(jīng)在Twitter、Groupon、Yahoo以及多個(gè)著名開(kāi)源項(xiàng)目(如Hive、Storm)中廣泛的使用。而FST是一種較新的序列化實(shí)現(xiàn),目前還缺乏足夠多的成熟使用案例,但它還是非常有前途的。三、其他新功特性支持基于嵌入式Tomcat的HTTPremoting體系:基于嵌入式tomcat實(shí)現(xiàn)dubbo的HTTPremoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠(yuǎn)程調(diào)用性能,并將ServletAPI的支持從5升級(jí)到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTPInvoker等協(xié)議都基于這個(gè)HTTPremoting體系)。升級(jí)Spring:將dubbo中Spring由x升級(jí)到目前最常用的3.x版本,減少項(xiàng)目中版本沖突帶來(lái)的麻煩。升級(jí)ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級(jí)到最新的版本,以修正老版本中包含的bug。Dubbox當(dāng)前的主要功能支持REST風(fēng)格遠(yuǎn)程調(diào)用(HTTP+JSON/XML):基于非常成熟的JBossRestEasy框架,在dubbo中實(shí)現(xiàn)了REST風(fēng)格(HTTP+JSON/XML)的遠(yuǎn)程調(diào)用,以顯著簡(jiǎn)化企業(yè)內(nèi)部的跨語(yǔ)言交互,同時(shí)顯著簡(jiǎn)化企業(yè)對(duì)外的OpenAPI、無(wú)線API甚至AJAX服務(wù)端等等的開(kāi)發(fā)。事實(shí)上,這個(gè)REST調(diào)用也使得Dubbo可以對(duì)當(dāng)今特別流行的“微服務(wù)”架構(gòu)提供基礎(chǔ)性支持。另外,REST調(diào)用也達(dá)到了比較高的性能,在基準(zhǔn)測(cè)試下,HTTP+JSON與Dubbo2.x默認(rèn)的RPC協(xié)議(即TCP+Hessian2二進(jìn)制序列化)之間只有1.5倍左右的差距,詳見(jiàn)文檔中的基準(zhǔn)測(cè)試報(bào)告。支持基于Kryo和FST的Java高效序列化實(shí)現(xiàn):基于當(dāng)今比較知名的Kryo和FST高性能序列化庫(kù),為Dubbo默認(rèn)的RPC協(xié)議添加新的序列化實(shí)現(xiàn),并優(yōu)化調(diào)整了其序列化體系,比較顯著的提高了DubboRPC的性能,詳見(jiàn)文檔中的基準(zhǔn)測(cè)試報(bào)告。支持基于Jackson的JSON序列化:基于業(yè)界應(yīng)用最廣泛的Jackson序列化庫(kù),為Dubbo默認(rèn)的RPC協(xié)議添加新的JSON序列化實(shí)現(xiàn)。支持基于嵌入式Tomcat的HTTPremoting體系:基于嵌入式tomcat實(shí)現(xiàn)dubbo的HTTPremoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠(yuǎn)程調(diào)用性能,并將ServletAPI的支持從2.5升級(jí)到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTPInvoker等協(xié)議都基于這個(gè)HTTPremoting體系)。升級(jí)Spring:將dubbo中Spring由2.x升級(jí)到目前最常用的3.x版本,減少版本沖突帶來(lái)的麻煩。升級(jí)ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級(jí)到最新的版本,以修正老版本中包含的bug。支持完全基于Java代碼的Dubbo配置:基于Spring的JavaConfig,實(shí)現(xiàn)完全無(wú)XML的純Java代碼方式來(lái)配置dubbo調(diào)整Demo應(yīng)用:暫時(shí)將dubbo的demo應(yīng)用調(diào)整并改寫(xiě)以主要演示REST功能、Dubbo協(xié)議的新序列化方式、基于Java代碼的Spring配置等等。修正了dubbo的bug包括配置、序列化、管理界面等等的bug。注:dubbox和dubbo2.x是兼容的,沒(méi)有改變dubbo的任何已有的功能和配置方式(除了升級(jí)了spring之類的版本)版本詳見(jiàn):/dangdangdotcom/dubbox/releasesdubbox-2.8.0:該版本已經(jīng)在生產(chǎn)環(huán)境中使用,主要支持REST風(fēng)格遠(yuǎn)程調(diào)用、支持Kryo和FST序列化、升級(jí)了Spring和Zookeeper客戶端、調(diào)整了demo應(yīng)用等等dubbox-2.8.1:主要支持基于嵌入式tomcat的http-remoting,優(yōu)化了REST客戶端性能,在REST中支持限制服務(wù)端接納的最大HTTP連接數(shù)等等dubbox-2.8.2:支持REST中的HTTPlogging,包括HTTPheader的字段和HTTPbody中的消息體,方便調(diào)試、日志紀(jì)錄等等提供輔助類便于REST的中文處理改變使用@Referenceannotation配置時(shí)的異常處理方式,即當(dāng)用annotation配置時(shí),過(guò)去dubbo在啟動(dòng)期間不拋出依賴服務(wù)找不到的異常,而是在具體調(diào)用時(shí)拋出NPE,這與用XML配置時(shí)的行為不一致。較大的充實(shí)了DubboREST的文檔dubbox-2.8.3:在REST中支持dubbo統(tǒng)一的方式用beanvalidationannotation作參數(shù)校驗(yàn)(沈理)在RpcContext上支持獲取底層協(xié)議的Request/Response(沈理)支持采用Spring的JavaConfig
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩節(jié)活動(dòng)總結(jié) 15篇
- 感恩老師的發(fā)言稿集合15篇
- 律師執(zhí)業(yè)年度工作總結(jié)
- 供電工程施工方案(技術(shù)標(biāo))
- 年會(huì)代表團(tuán)隊(duì)發(fā)言稿范文(10篇)
- 湖南省株洲市高三教學(xué)質(zhì)量統(tǒng)一檢測(cè)(一) 語(yǔ)文試題(含答案)
- 2025版汽車零部件銷售訂購(gòu)合同(年度版)
- 二零二五版淘寶年度合作運(yùn)營(yíng)效果跟蹤協(xié)議3篇
- 精細(xì)化人力資源管理的月度工作計(jì)劃
- 金屬非金屬公司話務(wù)員工作總結(jié)
- 勵(lì)志課件-如何做好本職工作
- 2024年山東省濟(jì)南市中考英語(yǔ)試題卷(含答案解析)
- 2024年社區(qū)警務(wù)規(guī)范考試題庫(kù)
- 2024年食用牛脂項(xiàng)目可行性研究報(bào)告
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)(2023版)解讀 2
- 2024年全國(guó)各地中考試題分類匯編(一):現(xiàn)代文閱讀含答案
- 2024-2030年中國(guó)戶外音箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
- 家務(wù)分工與責(zé)任保證書(shū)
- 武強(qiáng)縣華浩數(shù)控設(shè)備科技有限公司年產(chǎn)9000把(只)提琴、吉他、薩克斯等樂(lè)器及80臺(tái)(套)數(shù)控雕刻設(shè)備項(xiàng)目環(huán)評(píng)報(bào)告
- 安全生產(chǎn)法律法規(guī)匯編(2024年4月)
評(píng)論
0/150
提交評(píng)論