根據百度百科的描述,微服務架構是一項在雲中部署應用和服務的新技術。而SpringCloud是微服務架構思想的一個具體實現,它爲開發人員提供了構建分佈式系統中一些常見模式的工具(服務註冊與發現、熔斷器、分佈式配置、網關、控制總線等),SpringCloud是基於SpringBoot框架,它不是重複造輪子,而是將第三方實現的微服務應用的一些模塊集成,準確來講,SpringCloud是一個容器。html
目前在工做中一直用的是Dubbo2.7,趁着空閒時間,學習一下SpringCloud,看了網上不少關於兩者對比。前端
如下圖片及內容部分轉自(https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html和http://www.javashuo.com/article/p-kplatgkd-kz.html),若有侵權,請聯繫刪除。linux
打個比方:SpringCloud至關於整機,組件都至關完整;而Dubbo至關於組裝機,組件能夠按本身需求自由選擇;總體來講,整機的性能有保證,組裝的機子更自由。spring
Dubbo專一於RPC和服務治理,Spring Cloud則是一個微服務架構生態。後端
每一個組件都是須要部署在單獨的服務器上,GateWay用來接收前端請求、聚合服務,並批量調用後臺原子服務、每一個Service單獨與DB交互。服務器
①GateWay:前置網關,具體業務操做,GateWay經過Dubbo提供的負載均衡機制自動完成(Dubbo自己並無提供網關)架構
②Service:原子服務,只提供該業務相關的原子服務負載均衡
③Zookeeper:原子服務註冊到ZK上。框架
①全部請求都統一經過網關(Zuul)來訪問內部服務分佈式
②網關接收到請求後,從註冊中心(Eureka)獲取可用服務
③由Ribbon進行負載均衡後,分發到後端的具體實例
④微服務之間經過Feign進行通訊業務處理
①業務部署方式相同,都須要一個前置網關來隔絕外部直接調用原子服務的風險。
②Dubbo須要本身開發一套API網關(目前我所在公司是公司開發網關API+分佈式配置Disconf,disconf---分佈式配置管理平臺的搭建(linux版本)),而SpringCloud則能夠經過Zuul配置便可完成網關定製。
①支持RPC調用,性能較好
②支持多種序列化協議,如Hessian、Http、WebService
③Dubbo Admin後臺管理功能強大,提供了權重調節、負載均衡等
④中文文檔比較全面
①Registry嚴重依賴第三方組件(Zookeeper、Redis等),當這些組件出現問題時,服務調用很快就會中斷。
②Dubbo只是實現了服務治理,其餘微服務框架並未包含,若是須要使用則須要結合第三方框架實現(百度分佈式配置Disconf、京東服務跟蹤Hydra)、開發成本較大
①有強大的Spring社區、NetFlix等公司支持,且開源社區貢獻很是活躍
②分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體
③基於SpringBoot,具備簡單配置、快速開發、輕鬆部署、方便測試的優勢
④支持REST服務調用,相對於RPC,更加輕量化和靈活,有利於跨語言服務的實現以及服務的發佈部署,結合Swagger實現服務的文檔一體化
⑤提供了Docker及Kubernetes微服務編排支持
①REST服務調用性能會比RPC性能較低
②Spring Cloud整合了大量的組件,相關文檔比較複雜,須要針對性的閱讀
③支持REST服務調用,可能由於接口定義太輕,致使定義文檔與實際實現不一致致使服務集成時的問題(可使用統一文檔和版本管理解決,好比Swagger)
目前Spring Cloud也是很是火熱的,社區更新也比較快,因此什麼都學一點,生活更多彩一些。下面正式開始demo學習Spring Cloud,並附上結構圖。
理無專在、學無止境。