2019最詳細Dubbo相關面試題!

一、Dubbo是什麼?

Dubbo是阿里巴巴開源的基於 Java 的高性能 RPC 分佈式服務框架,現已成爲 Apache 基金會孵化項目。前端

面試官問你若是這個都不清楚,那下面的就不必問了。git

官網:http://dubbo.apache.orggithub

二、爲何要用Dubbo?

由於是阿里開源項目,國內不少互聯網公司都在用,已經通過不少線上考驗。內部使用了 Netty、Zookeeper,保證了高性能高可用性。web

使用 Dubbo 能夠將核心業務抽取出來,做爲獨立的服務,逐漸造成穩定的服務中心,可用於提升業務複用靈活擴展,使前端應用能更快速的響應多變的市場需求。面試

下面這張圖能夠很清楚的詮釋,最重要的一點是,分佈式架構能夠承受更大規模的併發流量。redis


2019最詳細Dubbo相關面試題!


下面是 Dubbo 的服務治理圖。算法


2019最詳細Dubbo相關面試題!


三、Dubbo 和 Spring Cloud 有什麼區別?

兩個沒關聯,若是硬要說區別,有如下幾點。spring

1)通訊方式不一樣sql

Dubbo 使用的是 RPC 通訊,而 Spring Cloud 使用的是 HTTP RESTFul 方式。apache

2)組成部分不一樣


2019最詳細Dubbo相關面試題!


四、dubbo都支持什麼協議,推薦用哪一種?

  • dubbo://(推薦)
  • rmi://
  • hessian://
  • http://
  • webservice://
  • thrift://
  • memcached://
  • redis://
  • rest://

五、Dubbo須要 Web 容器嗎?

不須要,若是硬要用 Web 容器,只會增長複雜性,也浪費資源。

六、Dubbo內置了哪幾種服務容器?

Spring Container

Jetty Container

Log4j Container

Dubbo 的服務容器只是一個簡單的 Main 方法,並加載一個簡單的 Spring 容器,用於暴露服務。

七、Dubbo裏面有哪幾種節點角色?

2019最詳細Dubbo相關面試題!


八、畫一畫服務註冊與發現的流程圖

2019最詳細Dubbo相關面試題!

服務註冊與發現流程圖

該圖來自 Dubbo 官網,供你參考,若是你說你熟悉 Dubbo, 面試官常常會讓你畫這個圖,記好了。

九、Dubbo默認使用什麼註冊中心,還有別的選擇嗎?

推薦使用 Zookeeper 做爲註冊中心,還有 Redis、Multicast、Simple 註冊中心,但不推薦。

十、Dubbo有哪幾種配置方式?

1)Spring 配置方式

2)Java API 配置方式

十一、Dubbo 核心的配置有哪些?

我曾經面試就遇到過面試官讓你寫這些配置,我也是蒙逼。。

2019最詳細Dubbo相關面試題!


配置之間的關係見下圖。

2019最詳細Dubbo相關面試題!


十二、在 Provider 上能夠配置的 Consumer 端的屬性有哪些?

  • 1)timeout:方法調用超時
  • 2)retries:失敗重試次數,默認重試 2 次
  • 3)loadbalance:負載均衡算法,默認隨機
  • 4)actives 消費者端,最大併發調用限制

1三、Dubbo啓動時若是依賴的服務不可用會怎樣?

Dubbo 缺省會在啓動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止 Spring 初始化完成,默認 check="true",能夠經過 check="false" 關閉檢查。

1四、Dubbo推薦使用什麼序列化框架,你知道的還有哪些?

推薦使用Hessian序列化,還有Duddo、FastJson、Java自帶序列化。

1五、Dubbo默認使用的是什麼通訊框架,還有別的選擇嗎?

Dubbo 默認使用 Netty 框架,也是推薦的選擇,另外內容還集成有Mina、Grizzly。

1六、Dubbo有哪幾種集羣容錯方案,默認是哪一種?

2019最詳細Dubbo相關面試題!


1七、Dubbo有哪幾種負載均衡策略,默認是哪一種?

2019最詳細Dubbo相關面試題!


1八、註冊了多個同同樣的服務,若是測試指定的某一個服務呢?

能夠配置環境點對點直連,繞過註冊中心,將以服務接口爲單位,忽略註冊中心的提供者列表。

1九、Dubbo支持服務多協議嗎?

Dubbo 容許配置多協議,在不一樣服務上支持不一樣協議或者同一服務上同時支持多種協議。

20、當一個服務接口有多種實現時怎麼作?

當一個接口有多種實現時,能夠用 group 屬性來分組,服務提供方和消費方都指定同一個 group 便可。

2一、服務上線怎麼兼容舊版本?

能夠用版本號(version)過渡,多個不一樣版本的服務註冊到註冊中心,版本號不一樣的服務相互間不引用。這個和服務分組的概念有一點相似。

2二、Dubbo能夠對結果進行緩存嗎?

能夠,Dubbo 提供了聲明式緩存,用於加速熱門數據的訪問速度,以減小用戶加緩存的工做量。

2三、Dubbo服務之間的調用是阻塞的嗎?

默認是同步等待結果阻塞的,支持異步調用。

Dubbo 是基於 NIO 的非阻塞實現並行調用,客戶端不須要啓動多線程便可完成並行調用多個遠程服務,相對多線程開銷較小,異步調用會返回一個 Future 對象。

異步調用流程圖以下。

2019最詳細Dubbo相關面試題!


2四、Dubbo支持分佈式事務嗎?

目前暫時不支持,後續可能採用基於 JTA/XA 規範實現,如以圖所示。

2019最詳細Dubbo相關面試題!


2五、Dubbo telnet 命令能作什麼?

dubbo 經過 telnet 命令來進行服務治理。

telnet localhost 8090複製代碼

2六、Dubbo支持服務降級嗎?

Dubbo 2.2.0 以上版本支持。

2七、Dubbo如何優雅停機?

Dubbo 是經過 JDK 的 ShutdownHook 來完成優雅停機的,因此若是使用 kill -9 PID 等強制關閉指令,是不會執行優雅停機的,只有經過 kill PID 時,纔會執行。

2八、服務提供者能實現失效踢出是什麼原理?

服務失效踢出基於 Zookeeper 的臨時節點原理。

2九、如何解決服務調用鏈過長的問題?

Dubbo 可使用 Pinpoint 和 Apache Skywalking(Incubator) 實現分佈式服務追蹤,固然還有其餘不少方案。

30、服務讀寫推薦的容錯策略是怎樣的?

讀操做建議使用 Failover 失敗自動切換,默認重試兩次其餘服務器。

寫操做建議使用 Failfast 快速失敗,發一次調用失敗就當即報錯。

3一、Dubbo必須依賴的包有哪些?

Dubbo 必須依賴 JDK,其餘爲可選。

3二、Dubbo的管理控制檯能作什麼?

管理控制檯主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。

3三、說說 Dubbo 服務暴露的過程。

Dubbo 會在 Spring 實例化完 bean 以後,在刷新容器最後一步發佈 ContextRefreshEvent 事件的時候,通知實現了 ApplicationListener 的 ServiceBean 類進行回調 onApplicationEvent 事件方法,Dubbo 會在這個方法中調用 ServiceBean 父類 ServiceConfig 的 export 方法,而該方法真正實現了服務的(異步或者非異步)發佈。

3四、Dubbo 中止維護了嗎?

2014 年開始中止維護過幾年,17 年開始從新維護,並進入了 Apache 項目。

2019最詳細Dubbo相關面試題!

3五、Dubbo 和 Dubbox 有什麼區別?

Dubbox 是繼 Dubbo 中止維護後,噹噹網基於 Dubbo 作的一個擴展項目,如加了服務可 Restful 調用,更新了開源組件等。

3六、你還了解別的分佈式框架嗎?

別的還有 Spring cloud、Facebook 的 Thrift、Twitter 的 Finagle 等。

3七、Dubbo 能集成 Spring Boot 嗎?

能夠的,項目地址以下。

https://github.com/apache/incubator-dubbo-spring-boot-project

3八、在使用過程當中都遇到了些什麼問題?

Dubbo 的設計目的是爲了知足高併發小數據量的 rpc 調用,在大數據量下的性能表現並很差,建議使用 rmi 或 http 協議。

2019最詳細Dubbo相關面試題!

3九、你讀過 Dubbo 的源碼嗎?

要了解 Dubbo 就必須看其源碼,瞭解其原理,花點時間看下吧,網上也有不少教程,後續有時間我也會在公衆號上分享 Dubbo 的源碼。

40、你以爲用 Dubbo 好仍是 Spring Cloud 好?

擴展性的問題,沒有好壞,只有適合不適合,不過我好像更傾向於使用 Dubbo, Spring Cloud 版本升級太快,組件更新替換太頻繁,配置太繁瑣,還有不少我以爲是沒有 Dubbo 順手的地方……

文末彩蛋

本文的重點是你有沒有收穫與成長,其他的都不重要,但願讀者們能謹記這一點。同時我通過多年的收藏目前也算收集到了一套完整的學習資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、Jvm性能調優、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個知識點高級進階乾貨,但願對想成爲架構師的朋友有必定的參考和幫助

資料獲取方式:‘加入Q羣809389099便可免費獲取

2019最詳細Dubbo相關面試題!

2019最詳細Dubbo相關面試題!
相關文章
相關標籤/搜索