Dubbo是什麼?前端
Dubbo能作什麼?java
Dubbo內置了哪幾種服務容器?面試
Dubbo 核心的配置有哪些?redis
Dubbo有哪幾種集羣容錯方案,默認是哪一種?spring
Dubbo有哪幾種負載均衡策略,默認是哪一種?架構
Dubbo默認使用的是什麼通訊框架,還有別的選擇嗎?負載均衡
你以爲用Dubbo好仍是SpringCloud好?框架
Dubbo是阿里巴巴開源的基於 Java 的高性能 RPC 分佈式服務框架,現已成爲 Apache 基金會孵化項目。致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。異步
簡單的說,dubbo就是個服務框架,若是沒有分佈式的需求,實際上是不須要用的,只有在分佈式的時候,纔有dubbo這樣的分佈式服務框架的需求,而且本質上是個服務調用的東東,說白了就是個遠程服務調用的分佈式框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上註冊)分佈式
其核心部分包含:
遠程通信: 提供對多種基於長鏈接的NIO框架抽象封裝,包括多種線程模型,序列化,以及「請求-響應」模式的信息交換方式。
集羣容錯: 提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。
自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方能夠平滑增長或減小機器。
透明化的遠程方法調用,就像調用本地方法同樣調用遠程方法,只需簡單配置,沒有任何API侵入。
軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,下降成本,減小單點。
服務自動註冊與發現,再也不須要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,而且可以平滑添加或刪除服務提供者。
Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置便可,Dubbo基於Spring的Schema擴展進行加載。
Spring Container
Jetty Container
Log4j Container
配置關係:
Dubbo 默認使用 Netty 框架,也是推薦的選擇,另外內容還集成有Mina、Grizzly。
沒有好壞,只有適合不適合。
dubbo的優點
單一應用架構,當網站流量很小時,只需一個應用,將全部功能都部署在一塊兒,以減小部署節點和成本。此時,用於簡化增刪改查工做量的 數據訪問框架(ORM)是關鍵。
垂直應用架構,當訪問量逐漸增大,單一應用增長機器帶來的加速度愈來愈小,將應用拆成互不相干的幾個應用,以提高效率。此時,用於加速前端頁面開發的 Web框架(MVC)是關鍵。
分佈式服務架構,當垂直應用愈來愈多,應用之間交互不可避免,將核心業務抽取出來,做爲獨立的服務,逐漸造成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提升業務複用及整合的 分佈式服務框架(RPC)是關鍵。
流動計算架構當服務愈來愈多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增長一個調度中心基於訪問壓力實時管理集羣容量,提升集羣利用率。此時,用於提升機器利用率的 資源調度和治理中心(SOA)是關鍵。
SpringCloud優點
約定優於配置
開箱即用、快速啓動
適用於各類環境
輕量級的組件
組件支持豐富,功能齊全
二者相比較
一、dubbo因爲是二進制的傳輸,佔用帶寬會更少
二、springCloud是http協議傳輸,帶寬會比較多,同時使用http協議通常會使用JSON報文,消耗會更大
三、dubbo的開發難度較大,緣由是dubbo的jar包依賴問題不少大型工程沒法解決
四、springcloud的接口協議約定比較自由且鬆散,須要有強有力的行政措施來限制接口無序升級
五、dubbo的註冊中心能夠選擇zk,redis等多種,springcloud的註冊中心只能用eureka或者自研
根據具體的團隊水平,業務狀況等特色,dubbo和SpringCloud各自能夠發揮各自不一樣的優點,沒有最好的框架,只有最合適的。(這道題比較靈活,要是提早知道對方公司採用的是哪一個,可使勁吹哪一個~)
最近三期