面試官:請比較一下SpringCloud與Dubbo

面試官:請比較一下SpringCloud與Dubbo

1、Dubbo

1. Dubbo簡介前端

Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可經過高性能的RPC實現服務的輸出和輸入功能,能夠和Spring框架無縫集成。面試

Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。tomcat

現已發展成爲Apache的頂級孵化開源項目,詳見官網:安全

2. Dubbo組織架構圖服務器

官網的dubbo組織架構圖

詳細介紹架構

  1. Registry:服務註冊與發現中心,做爲服務提供者和消費者註冊與發現的中心。
  2. Provider:服務提供者,在註冊中心註冊做爲服務提供的一方,發佈服務到服務註冊中心。
  3. Consumer:服務消費者,經過註冊中心協調,訂閱可用的已註冊的服務。
  4. Container:服務運行容器,獨立的容器相似於tomcat/jboss的做用,做爲服務運行的容器。
  5. Monitor:dubbo的監控中心,用來顯示接口暴露、註冊狀況,也能夠看接口的調用明細,調用時間等。

3. Dubbo的優點app

  1. 單一應用架構,當網站流量很小時,只需一個應用,將全部功能都部署在一塊兒,以減小部署節點和成本。此時,用於簡化增刪改查工做量的 數據訪問框架(ORM)是關鍵。
  2. 垂直應用架構,當訪問量逐漸增大,單一應用增長機器帶來的加速度愈來愈小,將應用拆成互不相干的幾個應用,以提高效率。此時,用於加速前端頁面開發的 Web框架(MVC)是關鍵。
  3. 分佈式服務架構,當垂直應用愈來愈多,應用之間交互不可避免,將核心業務抽取出來,做爲獨立的服務,逐漸造成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提升業務複用及整合的 分佈式服務框架(RPC)是關鍵。
  4. 流動計算架構當服務愈來愈多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增長一個調度中心基於訪問壓力實時管理集羣容量,提升集羣利用率。此時,用於提升機器利用率的 資源調度和治理中心(SOA)是關鍵。

2、SpringCloud

1. SpringCloud簡介負載均衡

SpringCloud是一系列框架的有序集合。它基於SpringBoot的便利性融合了一整套實現微服務的框架並提供了服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等組件。框架

2. SpringCloud組織架構分佈式

簡單SpringCloud組織架構圖

Spring Cloud子項目包括:

  • Spring Cloud Config:配置管理開發工具包,可讓你把配置放到遠程服務器,目前支持本地存儲、Git以及Subversion。
  • Spring Cloud Bus:事件、消息總線,用於在集羣(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。
  • Spring Cloud Netflix:針對多種Netflix組件提供的開發工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
  • Netflix Eureka:雲端負載均衡,一個基於 REST 的服務,用於定位服務,以實現雲端的負載均衡和中間層服務器的故障轉移。
  • Netflix Hystrix:容錯管理工具,旨在經過控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
  • Netflix Zuul:邊緣服務工具,是提供動態路由,監控,彈性,安全等的邊緣服務。
  • Netflix Archaius:配置管理API,包含一系列配置管理API,提供動態類型化屬性、線程安全配置操做、輪詢框架、回調機制等功能。
  • Spring Cloud for Cloud Foundry:經過Oauth2協議綁定服務到CloudFoundry,CloudFoundry是VMware推出的開源PaaS雲平臺。
  • Spring Cloud Sleuth:日誌收集工具包,封裝了Dapper,Zipkin和HTrace操做。
  • Spring Cloud Data Flow:大數據操做工具,經過命令行方式操做數據流。
  • Spring Cloud Security:安全工具包,爲你的應用程序添加安全控制,主要是指OAuth2。
  • Spring Cloud Consul:封裝了Consul操做,consul是一個服務發現與配置工具,與Docker容器能夠無縫集成。
  • Spring Cloud Zookeeper:操做Zookeeper的工具包,用於使用zookeeper方式的服務註冊和發現。
  • Spring Cloud Stream:數據流操做開發包,封裝了與Redis,Rabbit、Kafka等發送接收消息。
  • Spring Cloud CLI:基於 Spring Boot CLI,可讓你以命令行方式快速創建雲組件。

3. SpringCloud特色

  1. 約定優於配置
  2. 開箱即用、快速啓動
  3. 適用於各類環境
  4. 輕量級的組件
  5. 組件支持豐富,功能齊全

3、Dubbo與SpringCloud的比較

1. Dubbo與SpringCloud的核心要素比較

核心要素

2. 總體比較

  1. Dubbo因爲是二進制的傳輸,佔用帶寬會更少
  2. SpringCloud是Http協議傳輸,帶寬會比較多,同時使用http協議通常會使用JSON報文,消耗會更大
  3. Dubbo的開發難度較大,緣由是Dubbo的jar包依賴問題不少大型工程沒法解決
  4. SpringCloud的接口協議約定比較自由且鬆散,須要有強有力的行政措施來限制接口無序升級
  5. Dubbo的註冊中心能夠選擇Zookeeper,Redis等多種,SpringCloud的註冊中心只能用eureka或者自研
相關文章
相關標籤/搜索