更新時(shí)間:2021-06-30 16:48:25 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1619次
Dubbo是一個(gè)高性能,基于Java的RPC框架,由阿里巴巴開(kāi)源。一個(gè)分布式的服務(wù)框架。可以實(shí)現(xiàn)SOA(面向服務(wù)的架構(gòu))架構(gòu)。Dubbo使用的公司:京東、當(dāng)當(dāng)、阿里巴巴、中國(guó)電信等等。
分布式服務(wù)架構(gòu)的由來(lái)
以下式架構(gòu)演變過(guò)程:
早期,電信只有座機(jī)的時(shí)候,系統(tǒng)只有一個(gè)打電話的功能和一個(gè)計(jì)費(fèi)的功能。因?yàn)闃I(yè)務(wù)單一,所以只有一個(gè)系統(tǒng)。
單一業(yè)務(wù)的單體式架構(gòu)

后來(lái),電信業(yè)務(wù)豐富起來(lái)了。新增了“短信”、“寬帶”、“手機(jī)流量”等業(yè)務(wù)功能。按照常規(guī)做法,也只會(huì)在原有的“打電話”單一業(yè)務(wù)系統(tǒng)的基礎(chǔ)上,多添加幾個(gè)業(yè)務(wù)功能模塊而已。所有的業(yè)務(wù)功能(““電話”、“短信”、“寬帶”、“手機(jī)流量””)都還是在一個(gè)項(xiàng)目?jī)?nèi)部。如下圖:
多業(yè)務(wù)單體式架構(gòu)

多業(yè)務(wù)模式下的單體架構(gòu),當(dāng)業(yè)務(wù)不斷擴(kuò)張、系統(tǒng)內(nèi)部的業(yè)務(wù)功能模塊越來(lái)越多,會(huì)導(dǎo)致如下問(wèn)題:
1、會(huì)導(dǎo)致業(yè)務(wù)功能模塊的耦合度太高、不利于擴(kuò)展和維護(hù),以及推廣。
2、再者程序中存在一個(gè)魔性的數(shù)字:65535(16bit最大值)限制,(因?yàn)檎{(diào)用方法的指令容量只有16bit,65535正好是16bit能容納的最大數(shù)字)。重復(fù)的方法數(shù)太多,會(huì)加速達(dá)到這個(gè)上限。(比如Android應(yīng)用65535很容易就上限了)。
比如淘寶、天貓、阿里巴巴三個(gè)項(xiàng)目都需要用到支付,設(shè)想,將淘寶、天貓、阿里巴巴三個(gè)項(xiàng)目整合成一個(gè)項(xiàng)目的三個(gè)業(yè)務(wù)功能模塊,將會(huì)比較雜亂。所以,出現(xiàn)了淘寶、天貓、阿里巴巴三個(gè)獨(dú)立的項(xiàng)目,類似下圖:
垂直架構(gòu)

通過(guò)一步一步演變,架構(gòu)已經(jīng)成為如圖所示的垂直式架構(gòu)。但是大家都發(fā)現(xiàn)了其中的計(jì)費(fèi)功能出現(xiàn)了4次。這樣肯定不利于項(xiàng)目的維護(hù)和統(tǒng)一配置。(并且上圖的計(jì)費(fèi)只是眾多可能重復(fù)模塊中的一員)。所以不得不將多個(gè)項(xiàng)目都要使用的相同模塊獨(dú)立出來(lái),共享給業(yè)務(wù)功能使用。這樣,就演變成如下圖架構(gòu):

如圖所示,計(jì)費(fèi)被單獨(dú)提煉出來(lái)成為一個(gè)獨(dú)立的app,共其他app共同使用。圖中“其他”模塊用來(lái)代替千千萬(wàn)萬(wàn)類似計(jì)費(fèi)的模塊。
這樣一來(lái),每一個(gè)方塊就是一個(gè)獨(dú)立的應(yīng)用。這樣解決了業(yè)務(wù)復(fù)雜度,將業(yè)務(wù)模塊化、獨(dú)立化,方便共享和擴(kuò)展。這樣的架構(gòu)帶給我們需要解決的問(wèn)題如下:
1、各個(gè)獨(dú)立app之間的通信問(wèn)題怎么解決?
2、怎么做到統(tǒng)一調(diào)度、協(xié)調(diào)處理。
3、如果計(jì)費(fèi)模塊是并發(fā)最大的模塊,但是其他模塊并發(fā)不是很大。則需要對(duì)計(jì)費(fèi)進(jìn)行負(fù)載均衡,怎么實(shí)現(xiàn)?
架構(gòu)演變過(guò)程

什么是RPC?
RPC(Remote Procedure Call Protocol)遠(yuǎn)程過(guò)程調(diào)用協(xié)議。服務(wù)器A調(diào)用服務(wù)器B上的方法的一種技術(shù)。Dubbo就是一個(gè)RPC框架,實(shí)現(xiàn)了遠(yuǎn)程過(guò)程調(diào)用。

dubbo主要的三個(gè)要素:1、接口的遠(yuǎn)程調(diào)用2、負(fù)載均衡。3、服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)

dubbo默認(rèn)每次只訪問(wèn)一個(gè)服務(wù)器,需要主從配合完成數(shù)據(jù)同。
dubbo:registry cluster="replicate"address="redis://192.168.72.188:6379"/
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Dubbo分布式服務(wù)框架",希望對(duì)大家有幫助,想了解更多可查看Dubbo教程,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)