javascript
微服务选择Spring Cloud还是Dubbo?
點擊關注異步圖書,置頂公眾號
每天與你分享 IT好書 技術干貨 職場知識
?參與文末話題討論,每日贈送異步圖書。
——異步小編
在阿里巴巴的生態中,微服務逐漸成為主要的服務形態,伴隨著容器化的日臻成熟,大量的分布式、領域驅動設計的微服務被快速開發和部署,服務間呈現出搭積木的能力,使不同的業務通過重新組合數個微服務,就能實現新的業務場景。借助成熟的底層集團中間件,天然地支持微服務所需的動態擴縮、服務發現、全鏈路日志分析等能力。以阿里巴巴達摩院語音對話平臺為例,對話服務、理解服務、問答服務,以及對話管理平臺都是基于SpringBoot和Docker技術棧的。
微服務應該具備的功能微服務,可以拆分為“微”和“服務”二字。“微”即小的意思,那到底多小才算“微”呢?可能不同的團隊有不同的答案。從參與微服務的人數來講,單個微服務從架構設計、代碼開發、測試、運維的人數加起來是8~10人才算“微”。那么何為“服務”呢?按照“微服務”概念提出者Martin Fowler給出的定義:“服務”是一個獨立運行的單元組件,每個單元組件運行在獨立的進程中,組件與組件之間通常使用HTTP這種輕量級的通信機制進行通信。
微服務具有以下的特點。
- 按照業務來劃分服務,單個服務代碼量小,業務單一,易于維護。
- 每個微服務都有自己獨立的基礎組件,例如數據庫、緩存等,且運行在獨立的進程中。
- 微服務之間的通信是通過HTTP協議或者消息組件,且具有容錯能力。
- 微服務有一套服務治理的解決方案,服務之間不耦合,可以隨時加入和剔除服務。單個微服務能夠集群化部署,并且有負載均衡的能力。
- 整個微服務系統應該有一個完整的安全機制,包括用戶驗證、權限驗證、資源保護等。
- 整個微服務系統有鏈路追蹤的能力。
- 有一套完整的實時日志系統。
微服務具有以上這些特點,那么微服務需要具備一些什么樣的功能呢?微服務的功能主要體現在以下幾個方面。
- 服務的注冊和發現。
- 服務的負載均衡。
- 服務的容錯。
- 服務網關。
- 服務配置的統一管理。
- 鏈路追蹤。
- 實時日志。
阿里巴巴在2011年開源了Dubbo框架,雖然在2013年停止更新,但在2017年9月又重啟維護并發布了新版本。目前已有很多的公司將自己的業務建立在Dubbo之上,同時阿里云也推出了企業級分布式應用服務EDAS,為Dubbo提供應用托管。
Dubbo采用Zookeeper作為注冊中心,RPC作為服務調用方式,致力于提供高性能和透明化的RPC遠程服務調用方案。它與Spring無縫集成,基于服務提供方(服務端)與服務調用方(客戶端)角色構建簡單模型,其優點是使用方便、學習成本低。
?① 服務提供方發布服務到服務注冊中心。 ② 服務消費方從服務注冊中心訂閱服務。 ③ 注冊中心通知消息調用方服務已注冊。 ④ 服務消費方調用已經注冊的可用服務。 ⑤ 監控計數。 Spring CloudSpring 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?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: <第2.5个月>新店日记,shopee要
- 下一篇: javascript成神之路(1):如何