北京沙龙报名 | 关于Dubbo开源的那些事儿
自從去年7月份阿里宣布重啟Dubbo維護(hù)以后,開(kāi)源社區(qū)熱度最高的兩個(gè)問(wèn)題:一是這次開(kāi)源和以前有什么不一樣的地方?二是阿里的Dubbo和Spring Boot、 Spring Cloud 是什么關(guān)系?
2018年5月12日(周六),我們將在北京舉行Dubbo開(kāi)發(fā)者沙龍暨第四屆阿里中間件性能挑戰(zhàn)賽技術(shù)行,為你答疑解惑。點(diǎn)擊文末“閱讀原文”,即可免費(fèi)報(bào)名活動(dòng)。名額有限,先到先得哦。
Dubbo是阿里巴巴自研的分布式服務(wù)框架,自2012年開(kāi)源以來(lái),深得開(kāi)發(fā)人員的喜愛(ài),并被廣泛用于服務(wù)化解決方案中。自去年阿里巴巴中間件團(tuán)隊(duì)宣布重啟維護(hù)后,在社區(qū)引起極大的反響,目前在github上的star數(shù)增加至18000,并于2018年2月正式加入Apache孵化器進(jìn)行孵化。本次沙龍,將為大家介紹近期Dubbo所完成的一些工作及未來(lái)規(guī)劃,并對(duì)第四屆中間件性能挑戰(zhàn)賽賽題“挑戰(zhàn)Dubbo Agent”做出詳細(xì)解讀。
還不了解Dubbo的童鞋,下面讓我們一起來(lái)深入學(xué)習(xí)。
?
Dubbo 的基本原理
簡(jiǎn)單的說(shuō),Dubbo是基于Java的RPC框架。如圖所示,Dubbo工作分為4個(gè)角色,分別是服務(wù)提供者、服務(wù)消費(fèi)者、注冊(cè)中心、和監(jiān)控中心。
Dubbo工作原理
按照工作階段又分為部署階段和運(yùn)行階段。其中部署階段在圖中以藍(lán)色的線來(lái)表示,代表服務(wù)注冊(cè)、服務(wù)訂閱的過(guò)程,而運(yùn)行階段在圖中以紅色的線來(lái)表示,代表一次RPC的完整調(diào)用。部署階段中服務(wù)提供方在啟動(dòng)時(shí)在制定的端口上暴露服務(wù),并向注冊(cè)中心匯報(bào)自身的地址,服務(wù)調(diào)用方啟動(dòng)時(shí)向注冊(cè)中心訂閱感興趣的地址。運(yùn)行階段中注冊(cè)中心首先將地址列表推送給服務(wù)消費(fèi)者,服務(wù)消費(fèi)者從其中選取一個(gè)地址向?qū)Χ税l(fā)起調(diào)用。在這個(gè)過(guò)程中,服務(wù)消費(fèi)者和服務(wù)提供者的運(yùn)行狀態(tài)會(huì)上報(bào)給監(jiān)控中心。
Dubbo整體架構(gòu)圖
從Dubbo的整體架構(gòu)圖來(lái)看,這張圖從左往右看,分為兩部分,左半邊藍(lán)色背景的部分代表服務(wù)消費(fèi)者,右半邊綠色背景的部分代表服務(wù)提供者。從上往下看又分為九層。看左邊,九層按功能來(lái)劃分又被分為了三大類,分別是面向用戶的 biz,框架核心 RPC 以及負(fù)責(zé)遠(yuǎn)程傳輸?shù)?Remoting,看圖的右邊按面向人群又劃分為了兩類,上面兩層是面向用戶的API,而下面七層是面向擴(kuò)展提供者的SPI。
圖中的線代表對(duì)象與對(duì)象之間不同的關(guān)系,紫色代表繼承、黑色代表依賴、藍(lán)色虛線代表服務(wù)注冊(cè)、服務(wù)訂閱的過(guò)程,也就是上面講的部署階段,紅色代表一次完整的RPC調(diào)用,也就是運(yùn)行階段。順著紅色的線,可以體驗(yàn)一次完整的 RPC 調(diào)用是如何進(jìn)行的。
首先從圖的左邊開(kāi)始,用戶從 Proxy 層發(fā)起一次RPC調(diào)用,Dubbo 從 Registry 層拿到服務(wù)的地址列表,再通過(guò) Cluster 層選擇其中的一個(gè)作為目標(biāo)地址,再流經(jīng)Protocol 決定的執(zhí)行鏈,最后將服務(wù)信息,包括要調(diào)用的服務(wù)名、方法名、參數(shù)等序列化,再經(jīng)過(guò)應(yīng)用協(xié)議編碼,通過(guò) Transport 層發(fā)送到網(wǎng)絡(luò)上。右邊的服務(wù)提供者從網(wǎng)絡(luò)上收到數(shù)據(jù)以后,從下往上,依次通過(guò)應(yīng)用協(xié)議解碼、反序列化得到要調(diào)用的服務(wù)信息,再經(jīng)由執(zhí)行鏈,最終通過(guò) Invoker 找到目標(biāo)服務(wù)的目標(biāo)方法,執(zhí)行并返回結(jié)果。
解讀完Dubbo的架構(gòu)圖,再來(lái)看看架構(gòu)圖中體現(xiàn)的設(shè)計(jì)原則。
Dubbo秉承高內(nèi)聚、低耦合的設(shè)計(jì),這一點(diǎn)體現(xiàn)在架構(gòu)圖中九層的清晰劃分上,也體現(xiàn)在依賴的方向上。線條的方向永遠(yuǎn)是從上指向下,沒(méi)有循環(huán)依賴和反向依賴的出現(xiàn)。Dubbo還有一個(gè)很重要的設(shè)計(jì)哲學(xué)就是平等對(duì)待第三方的擴(kuò)展,即Dubbo內(nèi)建的功能也是通過(guò)同樣的擴(kuò)展機(jī)制提供出來(lái)的,第三方的擴(kuò)展和內(nèi)建功能可以相互取代。正是由于Dubbo將第三方擴(kuò)展當(dāng)成框架的一等公民,為未來(lái)基于這個(gè)機(jī)制建立生態(tài)帶來(lái)了可能性。
Dubbo 開(kāi)源的現(xiàn)狀
從數(shù)據(jù)維度來(lái)看,去年7月重啟至今,Dubbo 在 github 上的 star 數(shù)增長(zhǎng)了 77% ,達(dá)到了 1.8 萬(wàn),目前在 github java 類項(xiàng)目中排名 11 位,在去年開(kāi)源中國(guó)舉辦的2017最受歡迎的開(kāi)源項(xiàng)目中 Dubbo 和阿里巴巴其他三款軟件 fastjson、druid、rocketmq 共同入選。
從用戶來(lái)看,主要有3種類型,第一類是以阿里巴巴,滴滴,當(dāng)當(dāng)為代表的互聯(lián)網(wǎng)企業(yè);第二類是向互聯(lián)網(wǎng)轉(zhuǎn)型的大型企業(yè),其中有中國(guó)工商銀行、中國(guó)電信和中國(guó)人壽;第三類是使用Dubbo作為服務(wù)化方案的 ISV,如亞信,文思。這些企業(yè)中,有一些維護(hù)著自己的私有分支,有些企業(yè)的員工積極參與Dubbo的建設(shè),在這次進(jìn)入Apache孵化的過(guò)程中,當(dāng)當(dāng)、去哪兒、微店的員工成為了初始成員。5月12日,Dubbo將在北京車庫(kù)咖啡舉行首次線下沙龍。
Dubbo 未來(lái)規(guī)劃與進(jìn)入 Apache 孵化
Dubbo 后續(xù)規(guī)劃主要圍繞技術(shù)趨勢(shì)與自身定位兩塊:從技術(shù)趨勢(shì)來(lái)看,主要包含3個(gè)方面:
第一方面:模塊化和元數(shù)據(jù)。通過(guò)這兩塊的優(yōu)化來(lái)解決適應(yīng)未來(lái)技術(shù)方向的問(wèn)題,也就是微服務(wù)和云原生,具體來(lái)說(shuō),目前 Dubbo 服務(wù)治理與網(wǎng)絡(luò)傳輸耦合嚴(yán)重,通過(guò)進(jìn)一步的模塊化工作可以為 Dubbo 成為服務(wù)網(wǎng)格中的數(shù)據(jù)面板做好準(zhǔn)備,元數(shù)據(jù)目前即包含服務(wù)注冊(cè)信息,也包含服務(wù)配置信息,將兩者分離可以更清晰地分開(kāi)注冊(cè)層和配置層,為適配微服務(wù)的注冊(cè)中心和配置中心打好基礎(chǔ)。
第二方面:如何將阿里在服務(wù)治理方面的經(jīng)驗(yàn)回饋給社區(qū)。其中包括了路由策略、大流量和大規(guī)模,在路由策略中阿里打算引入多機(jī)房路由、參數(shù)路由、灰度路由等策略,在大流量方面重點(diǎn)考慮熔斷、限流、隔離的支持,在大規(guī)模集群方面需要解決超大規(guī)模地址列表對(duì)CPU、內(nèi)存帶來(lái)的壓力。
第三方面:增強(qiáng)異步化。包括對(duì) CompletableFuture 的支持以及跨進(jìn)程 Reactive Stream 的預(yù)研,目前 Reactive Stream 在 Dubbo 3.0 中正在孵化,壓測(cè)表明這項(xiàng)技術(shù)對(duì)于提升 CPU 利用率和系統(tǒng)的吞吐率有極大幫助。
Dubbo進(jìn)入Apache孵化的歷程,分為三個(gè)階段:準(zhǔn)備階段、孵化階段和畢業(yè)階段。
Apache 孵化階段
目前Dubbo已經(jīng)完成了第一個(gè)環(huán)節(jié),之后就是在導(dǎo)師的指導(dǎo)下按照Apache的規(guī)范做版本迭代、運(yùn)營(yíng)社區(qū)、發(fā)展更多的committer,如果最終通過(guò)了成熟度評(píng)估,就可以順利畢業(yè)成為Apache的頂級(jí)項(xiàng)目。
想要了解更多Dubbo的現(xiàn)狀及發(fā)展計(jì)劃,獲得Dubbo專家的現(xiàn)場(chǎng)指導(dǎo)?
歡迎訪問(wèn):https://jinshuju.net/f/3mWDC9,立即報(bào)名參加沙龍!
總結(jié)
以上是生活随笔為你收集整理的北京沙龙报名 | 关于Dubbo开源的那些事儿的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里有一帮吃货工程师,在食堂玩起了“黑科
- 下一篇: 基于TensorFlow,人声识别如何在