1. 程式人生 > >微服務選擇Spring Cloud還是Dubbo?

微服務選擇Spring Cloud還是Dubbo?

微服務構架 Spring Cloud Dubbo

點擊關註 異步圖書,置頂公眾號

每天與你分享 IT好書 技術幹貨 職場知識

技術分享圖片

參與文末話題討論,每日贈送異步圖書。

——異步小編

在阿裏巴巴的生態中,微服務逐漸成為主要的服務形態,伴隨著容器化的日臻成熟,大量的分布式、領域驅動設計的微服務被快速開發和部署,服務間呈現出搭積木的能力,使不同的業務通過重新組合數個微服務,就能實現新的業務場景。借助成熟的底層集團中間件,天然地支持微服務所需的動態擴縮、服務發現、全鏈路日誌分析等能力。以阿裏巴巴達摩院語音對話平臺為例,對話服務、理解服務、問答服務,以及對話管理平臺都是基於SpringBoot和Docker技術棧的。

微服務應該具備的功能

微服務,可以拆分為“微”和“服務”二字。“微”即小的意思,那到底多小才算“微”呢?可能不同的團隊有不同的答案。從參與微服務的人數來講,單個微服務從架構設計、代碼開發、測試、運維的人數加起來是8~10人才算“微”。那麽何為“服務”呢?按照“微服務”概念提出者Martin Fowler給出的定義:“服務”是一個獨立運行的單元組件,每個單元組件運行在獨立的進程中,組件與組件之間通常使用HTTP這種輕量級的通信機制進行通信。

微服務具有以下的特點。

  • 按照業務來劃分服務,單個服務代碼量小,業務單一,易於維護。

  • 每個微服務都有自己獨立的基礎組件,例如數據庫、緩存等,且運行在獨立的進程中。

  • 微服務之間的通信是通過HTTP協議或者消息組件,且具有容錯能力。

  • 微服務有一套服務治理的解決方案,服務之間不耦合,可以隨時加入和剔除服務。單個微服務能夠集群化部署,並且有負載均衡的能力。

  • 整個微服務系統應該有一個完整的安全機制,包括用戶驗證、權限驗證、資源保護等。

  • 整個微服務系統有鏈路追蹤的能力。

  • 有一套完整的實時日誌系統。

微服務具有以上這些特點,那麽微服務需要具備一些什麽樣的功能呢?微服務的功能主要體現在以下幾個方面。

  • 服務的註冊和發現。

  • 服務的負載均衡。

  • 服務的容錯。

  • 服務網關。

  • 服務配置的統一管理。

  • 鏈路追蹤。

  • 實時日誌。

Dubbo

阿裏巴巴在2011年開源了Dubbo框架,雖然在2013年停止更新,但在2017年9月又重啟維護並發布了新版本。目前已有很多的公司將自己的業務建立在Dubbo之上,同時阿裏雲也推出了企業級分布式應用服務EDAS,為Dubbo提供應用托管。

Dubbo采用Zookeeper作為註冊中心,RPC作為服務調用方式,致力於提供高性能和透明化的RPC遠程服務調用方案。它與Spring無縫集成,基於服務提供方(服務端)與服務調用方(客戶端)角色構建簡單模型,其優點是使用方便、學習成本低。

技術分享圖片

① 服務提供方發布服務到服務註冊中心。

② 服務消費方從服務註冊中心訂閱服務。

③ 註冊中心通知消息調用方服務已註冊。

④ 服務消費方調用已經註冊的可用服務。

⑤ 監控計數。

Spring Cloud

Spring Cloud基於Spring Boot實現,使用HTTP的RESTful風格API作為調用方式。它所包含的多個子項目共同構建了微服務架構體系。

技術分享圖片

Netflix Eureka

Spring Cloud 的服務註冊中心提供服務註冊、服務發現、負載均衡等功能。


Netflix Hystrix

當某個服務發生故障之後,則觸發熔斷機制(Hystrix)向服務調用方返回結果標識錯誤,而不是一直等待服務提供方返回結果,這樣就不會使得線程因調用故障服務而被長時間占用不釋放,避免了故障在分布式系統中的蔓延。

Netflix Zuul

代理各模塊提供的服務,統一暴露給第三方應用。提供動態路由、監控、彈性、全等的邊緣服務。


Config Server

分布式架構下多微服務會產生非常多的配置文件,分布式配置中心(Config Server)將所有配置文件交由GIT或SVN進行統一管理,避免出錯。


Spring Boot

在使用Spring開發時,通常需要完成Spring框架及其他第三方工具配置文件的編寫,非常麻煩。Spring Boot通過犧牲項目的自由度來減少配置的復雜度,約定一套規則,把這些框架都自動配置集成好,從而達到“開箱即用”。

Spring Clould與Dubbo比較

首先從微服務關註點來比較Spring Cloud和Dubbo兩大服務框架,如表1所示。

表1 從微服務關註點比較Spring Cloud和Dubbo

技術分享圖片

Spring Cloud擁有很多的項目模塊,包含了微服務系統的方方面面。Dubbo是一個非常優秀的服務治理和服務調用框架,但缺少很多功能模塊,例如網關、鏈路追蹤等。在項目模塊上,Spring Cloud占據著更大的優勢。

Spring Cloud的更新速度非常塊,Camden.SR5版本發布於2017年2月6日,Camden.SR6版本發布於2017年3月10日,Dalston版本發布於2017年4月12日,基本每個月會發一次版本的叠代。從GitHub的代碼倉庫來看,Spring Cloud幾乎每天都有更新。阿裏巴巴於2011年10月開源了Dubbo,開源後的Dubbo發展迅速,大概每2~3個月有一次版本更新。然而,從在2013年3月開始,Dubbo暫停了版本更新,並只在2014年10月發布了一個小版本,修復了一個bug,之後長期處於版本停止更新的狀態。直到2017年9月,阿裏巴巴中間件部門重新組建了Dubbo團隊,把Dubbo列為重點開源項目,並在2017年9~11月期間,一直保持每月一次版本更新的頻率。

從學習成本上考慮,Dubbo的版本趨於穩定,文檔完善,可以即學即用,沒有太大難度。Spring Cloud 基於Spring Boot開發,需要開發者先學會Spring Boot。另外,Spring Cloud版本叠代快,需要快速跟進學習。Spring Cloud文檔大多是英文的,要求學習者有一定的英文閱讀能力。此外,Spring Cloud文檔很多,不容易快速找到相應的文檔。

從開發風格上來講,Dubbo 更傾向於Spring Xml的配置方式,Dubbo官方也推薦這種方式。Spring Cloud基於Spring Boot,Spring Boot采用的是基於註解和JavaBean配置方式的敏捷開發。從開發速度上講,Spring Cloud具有更高的開發和部署速度。

最後,Spring Cloud 的通信方式大多數是基於HTTP Restful風格的,服務與服務之間完全無關、無耦合。由於采用的是HTTP Rest,因此服務無關乎語言和平臺,只需要提供相應API接口,就可以相互調用。Dubbo 的通信方式基於遠程調用,對接口、平臺和語言有強依賴性。如果需要實現跨平臺調用服務,需要寫額外的中間件,這也是Dubbo存在的原因。

Dubbo和Spring Cloud擁有各自的優缺點。Dubbo更易上手,並且廣泛使用於阿裏巴巴的各大站點,經歷了“雙11”期間高並發、大流量的檢驗,Dubbo框架非常成熟和穩定。Spring Cloud服務框架嚴格遵守Martin Fowler 提出的微服務規範,社區異常活躍,它很可能成為微服務架構的標準。

微服務必讀書

技術分享圖片

《深入理解Spring Cloud與微服務構建》

方誌朋 著

點擊封面購買紙書


CSDN博客專家、Spring Cloud中國社區聯合創始人全新作品。

本書共分16章,全面涵蓋了Spring Cloud構建微服務相關的知識點。第1、2章詳細介紹了微服務架構和Spring Cloud。第3、4章講解了用Spring Cloud構建微服務的準備工作。第5~12章以案例為切入點,講解了Spring Cloud構建微服務的基礎組件,包括Eureka、Ribbon、Feign、Hystrix、Zuul、Config、Sleuth、Admint等組件。第13~15章講述了使用Spring Cloud OAuth2來保護微服務系統的相關知識。第16章用一個綜合案例,全面講解了如何使用Spring Cloud構建微服務,可以作為實際開發的樣例工程。


技術分享圖片

《微服務分布式構架開發實戰》

龔鵬 著

點擊封面購買紙書

為了更快地實施微服務,本書基於開源且穩定的第三方工具,介紹如何構建一個龐大且復雜的分布式系統,用於滿足項目中的實際需求。每一個工具庫為了適應更豐富的使用場景,通常都會把部分參數以配置文件的方式暴露出來,同時提供用於開發環境的默認配置。本書基於快速使用為主線路,盡可能多地講解配置參數的意義及之間的關系。在掌握足夠多的知識點後建立起對微服務分布式架構的認知,以便為探求更深層次的知識點做好鋪墊。

本書適合Java工程師、初級架構師、大中專院校相關專業師生、Java培訓班學員及獨立開發者與自學讀者使用。

技術分享圖片

今日互動

針對微服務你有哪方面的問題急需解決?或者試讀圖書說說你的感受?截止時間5月3日17時,留言+轉發本活動到朋友圈,小編將抽獎選出5名讀者贈送e讀版100元異步社區代金券一張,(留言點贊最多的自動獲得一張)。

推薦閱讀

2018年4月新書書單

異步圖書最全Python書單

一份程序員必備的算法書單

第一本Python神經網絡編程圖書


技術分享圖片

長按二維碼,可以關註我們喲

每天與你分享IT好文。


在“異步圖書”後臺回復“關註”,即可免費獲得2000門在線視頻課程;推薦朋友關註根據提示獲取贈書鏈接,免費得異步e讀版圖書一本。趕緊來參加哦!

點擊閱讀原文,查看更多

閱讀原文


微服務選擇Spring Cloud還是Dubbo?