想突破學(xué)習(xí)瓶頸,為什么要認(rèn)真的學(xué)一下Dubbo?

今天有學(xué)生在問,在學(xué)習(xí)dubbo的時(shí)候遇到瓶頸了怎么辦,一些東西就感覺就在那里,但是,就是碰不到,摸不著,陷入了迷茫,今天在這里,就跟大家講一下怎么突破這個(gè)瓶頸

先自我介紹一下哈,我是魯班學(xué)院的周瑜老師,擁有十年互聯(lián)網(wǎng)電商、互聯(lián)網(wǎng)金融行業(yè)從業(yè)經(jīng)驗(yàn),在系統(tǒng)架構(gòu)設(shè)計(jì)、系統(tǒng)性能調(diào)優(yōu)、高并發(fā)秒殺系統(tǒng)、開源項(xiàng)目等方面有非常豐富的經(jīng)驗(yàn)。 曾任螞蟻金服高級(jí)開發(fā)工程師、大眾點(diǎn)評(píng)高級(jí)架構(gòu)師,同時(shí)也是開源框架Dubbo的源碼貢獻(xiàn)者、魯班學(xué)院金牌講師。

進(jìn)入正題:DubBo介紹

Apache Dubbo (incubating) |?d?b??| 是一款高性能、輕量級(jí)的開源Java RPC框架。

什么是RPC

百度:RPC(Remote Procedure Call)—遠(yuǎn)程過(guò)程調(diào)用,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。

維基百科:遠(yuǎn)程過(guò)程調(diào)用(英語(yǔ):Remote Procedure Call,縮寫為 RPC)是一個(gè)計(jì)算機(jī)通信協(xié)議。該協(xié)議允許運(yùn)行于一臺(tái)計(jì)算機(jī)的程序調(diào)用另一臺(tái)計(jì)算機(jī)的子程序,而程序員無(wú)需額外地為這個(gè)交互作用編程。如果涉及的軟件采用面向?qū)ο缶幊?,那么遠(yuǎn)程過(guò)程調(diào)用亦可稱作遠(yuǎn)程調(diào)用或遠(yuǎn)程方法調(diào)用。

file
file

Dubbo的六大特點(diǎn)

面向接口的高性能RPC調(diào)用:提供高性能的基于代理的遠(yuǎn)程調(diào)用能力,服務(wù)以接口為粒度,為開發(fā)者屏蔽遠(yuǎn)程調(diào)用底層細(xì)節(jié)。

智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著減少調(diào)用延遲,提高系統(tǒng)吞吐量。

服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn):支持多種注冊(cè)中心服務(wù),服務(wù)實(shí)例上下線實(shí)時(shí)感知。

高度可擴(kuò)展能力:遵循微內(nèi)核+插件的設(shè)計(jì)原則,所有核心能力如Protocol、Transport、Serialization被設(shè)計(jì)為擴(kuò)展點(diǎn),平等對(duì)待內(nèi)置實(shí)現(xiàn)和第三方實(shí)現(xiàn)。

運(yùn)行期流量調(diào)度:內(nèi)置條件、腳本等路由策略,通過(guò)配置不同的路由規(guī)則,輕松實(shí)現(xiàn)灰度發(fā)布,同機(jī)房?jī)?yōu)先等功能。

可視化的服務(wù)治理與運(yùn)維:提供豐富服務(wù)治理、運(yùn)維工具:隨時(shí)查詢服務(wù)元數(shù)據(jù)、服務(wù)健康狀態(tài)及調(diào)用統(tǒng)計(jì),實(shí)時(shí)下發(fā)路由策略、調(diào)整配置參數(shù)。

file
file

這個(gè)是使用DubbO前

file

使用DubbO之后

你們對(duì)比一下前后有什么變化沒有,我總結(jié)了一下幾點(diǎn),各位可以看一下:

  • 使用Dubbo后服務(wù)調(diào)用地址透明
  • 使用Dubbo后服務(wù)返回參數(shù)公用
  • 使用Dubbo后服務(wù)Http請(qǐng)求方法透明
  • 使用Dubbo后對(duì)開發(fā)者服務(wù)調(diào)用更透明,開發(fā)效率更快

手寫模擬Dubbo

  • Provider模塊:提供API、實(shí)現(xiàn)API、暴露(啟動(dòng)tomcat,nettyServer)、服務(wù)本地注冊(cè)、服務(wù)注冊(cè)中心注冊(cè)
  • Consumer模塊:拿接口名從注冊(cè)中心獲取服務(wù)地址、調(diào)用服務(wù)
  • Registry模塊:保存服務(wù)配置信息(服務(wù)名:List<URL>)
  • RpcProtocol模塊:基于Tomcat的HttpProtocol、基于Netty的DubboProtocol
  • Framework模塊:框架實(shí)現(xiàn)
file

Tomcat結(jié)構(gòu)

file
file

那么什么是Dubbo Ecosystem呢??

Dubbo目前提供的能力逐漸的無(wú)法滿足開發(fā)者構(gòu)建完整微服務(wù)的需求,開發(fā)者缺少一套完整的圍繞Dubbo的微服務(wù)解決方案,例如API gateway、熔斷限流、分布式監(jiān)控和分布式事務(wù)等方面。開發(fā)者需要自研,或者調(diào)研各類開源的框架
決定圍繞Dubbo打造一整套微服務(wù)的解決方案,涵蓋微服務(wù)開發(fā)過(guò)程中的各方面。這里面的項(xiàng)目都是會(huì)經(jīng)過(guò)Dubbo社區(qū)共同評(píng)估,和Dubbo高度集成,且在生產(chǎn)中得到過(guò)驗(yàn)證的項(xiàng)目(這里的項(xiàng)目不僅僅是阿里巴巴開源的),我們把這個(gè)生態(tài)稱之為Apache Dubbo Ecosystem。

file

Dubbo生態(tài)介紹

file

Dubbo生態(tài)組件

L0層包括了Dubbo的核心RPC和Service Mesh的能力。
L1層包含了服務(wù)的注冊(cè)發(fā)現(xiàn)、配置管理、系統(tǒng)高可用Reliability和Metrics的數(shù)據(jù)統(tǒng)計(jì)。
如果說(shuō)L0和L1是RPC領(lǐng)域的核心組件,那么L2層開始則更加貼近微服務(wù)領(lǐng)域。L2層包含API Gateway、分布式跟蹤Tracing、分布式診斷Diagnosis和分布式事務(wù)Transaction等。
L3層的組件則更加開放一些。Scheduling、Event Driven、Authenthentication和Function等方面都還沒有特別明確的方案出來(lái),將會(huì)由第三方社區(qū)主導(dǎo),形成開放生態(tài)。以Event Driven為例,社區(qū)主導(dǎo)使用的是RocketMQ,RocketMQ已經(jīng)發(fā)布了C、C++、Python和Go客戶端,并支持在Spring Boot中快速集成RocketMQ,同時(shí)支持Spring Message規(guī)范,方便開發(fā)者從其它MQ快速切換到RocketMQ。

file
file

“可以將Service Mesh比作是應(yīng)用程序或者說(shuō)微服務(wù)間的 TCP/IP,負(fù)責(zé)服務(wù)之間的網(wǎng)絡(luò)調(diào)用、限流、熔斷和監(jiān)控?!?/p>

–魯班學(xué)院周瑜老師

dubbo教學(xué)視頻:https://www.bilibili.com/video/av79410607

本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容