Dubbo面試八連問,這些你都能答上來嗎?
Dubbo是什么?
Dubbo能做什么?
Dubbo內(nèi)置了哪幾種服務(wù)容器?
Dubbo 核心的配置有哪些?
Dubbo有哪幾種集群容錯方案,默認(rèn)是哪種?
Dubbo有哪幾種負(fù)載均衡策略,默認(rèn)是哪種?
Dubbo默認(rèn)使用的是什么通信框架,還有別的選擇嗎?
你覺得用Dubbo好還是Springcloud好?
1.Dubbo是什么?
Dubbo是阿里巴巴開源的基于 Java 的高性能 RPC 分布式服務(wù)框架,現(xiàn)已成為 Apache 基金會孵化項(xiàng)目。致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。
簡單的說,dubbo就是個服務(wù)框架,如果沒有分布式的需求,其實(shí)是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務(wù)框架的需求,并且本質(zhì)上是個服務(wù)調(diào)用的東東,說白了就是個遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl,以服務(wù)者與消費(fèi)者的方式在dubbo上注冊)
其核心部分包含:
遠(yuǎn)程通訊: 提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應(yīng)”模式的信息交換方式。
集群容錯: 提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
自動發(fā)現(xiàn): 基于注冊中心目錄服務(wù),使服務(wù)消費(fèi)方能動態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。
2. Dubbo能做什么?
透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。
軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點(diǎn)。
服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
Dubbo采用全Spring配置方式,透明化接入應(yīng)用,對應(yīng)用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載。
3.Dubbo內(nèi)置了哪幾種服務(wù)容器?
Spring Container
Jetty Container
Log4j Container
4.Dubbo 核心的配置有哪些?

配置關(guān)系:

5.Dubbo有哪幾種集群容錯方案,默認(rèn)是哪種?

6.Dubbo有哪幾種負(fù)載均衡策略,默認(rèn)是哪種?

7.Dubbo默認(rèn)使用的是什么通信框架,還有別的選擇嗎?
Dubbo 默認(rèn)使用 Netty 框架,也是推薦的選擇,另外內(nèi)容還集成有Mina、Grizzly。
8.你覺得用Dubbo好還是Springcloud好?
沒有好壞,只有適合不適合。
dubbo的優(yōu)勢
單一應(yīng)用架構(gòu),當(dāng)網(wǎng)站流量很小時,只需一個應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。此時,用于簡化增刪改查工作量的 數(shù)據(jù)訪問框架(ORM)是關(guān)鍵。
垂直應(yīng)用架構(gòu),當(dāng)訪問量逐漸增大,單一應(yīng)用增加機(jī)器帶來的加速度越來越小,將應(yīng)用拆成互不相干的幾個應(yīng)用,以提升效率。此時,用于加速前端頁面開發(fā)的 Web框架(MVC)是關(guān)鍵。
分布式服務(wù)架構(gòu),當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求。此時,用于提高業(yè)務(wù)復(fù)用及整合的 分布式服務(wù)框架(RPC)是關(guān)鍵。
流動計算架構(gòu)當(dāng)服務(wù)越來越多,容量的評估,小服務(wù)資源的浪費(fèi)等問題逐漸顯現(xiàn),此時需增加一個調(diào)度中心基于訪問壓力實(shí)時管理集群容量,提高集群利用率。此時,用于提高機(jī)器利用率的 資源調(diào)度和治理中心(SOA)是關(guān)鍵。
Springcloud優(yōu)勢
約定優(yōu)于配置
開箱即用、快速啟動
適用于各種環(huán)境
輕量級的組件
組件支持豐富,功能齊全
兩者相比較
1、dubbo由于是二進(jìn)制的傳輸,占用帶寬會更少
2、springcloud是http協(xié)議傳輸,帶寬會比較多,同時使用http協(xié)議一般會使用JSON報文,消耗會更大
3、dubbo的開發(fā)難度較大,原因是dubbo的jar包依賴問題很多大型工程無法解決
4、springcloud的接口協(xié)議約定比較自由且松散,需要有強(qiáng)有力的行政措施來限制接口無序升級
5、dubbo的注冊中心可以選擇zk,redis等多種,springcloud的注冊中心只能用eureka或者自研
根據(jù)具體的團(tuán)隊(duì)水平,業(yè)務(wù)情況等特點(diǎn),dubbo和Springcloud各自可以發(fā)揮各自不同的優(yōu)勢,沒有最好的框架,只有最合適的。(這道題比較靈活,要是提前知道對方公司采用的是哪個,可以使勁吹哪個~)
這里的話我也將我之前在學(xué)習(xí)過程中用到的一些學(xué)習(xí)資料整理成了文檔,以及我自身之前的一個面試文案和知識點(diǎn)補(bǔ)充,有需要的朋友可以評論區(qū)留言? ,這里也祝愿大家最終都能夠?qū)W有所成,早日找到滿意的工作!
先分享一些干貨吧,需要更多學(xué)習(xí)資料可評論區(qū)留言~
適合初學(xué)者學(xué)習(xí)的2021最新Java學(xué)習(xí)視頻,書籍,面試題,PDF文檔,都是經(jīng)典干貨!