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

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

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