javascript
微服务选择Spring Cloud还是Dubbo?
點(diǎn)擊關(guān)注異步圖書,置頂公眾號(hào)
每天與你分享 IT好書 技術(shù)干貨 職場(chǎng)知識(shí)
?參與文末話題討論,每日贈(zèng)送異步圖書。
——異步小編
在阿里巴巴的生態(tài)中,微服務(wù)逐漸成為主要的服務(wù)形態(tài),伴隨著容器化的日臻成熟,大量的分布式、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的微服務(wù)被快速開發(fā)和部署,服務(wù)間呈現(xiàn)出搭積木的能力,使不同的業(yè)務(wù)通過(guò)重新組合數(shù)個(gè)微服務(wù),就能實(shí)現(xiàn)新的業(yè)務(wù)場(chǎng)景。借助成熟的底層集團(tuán)中間件,天然地支持微服務(wù)所需的動(dòng)態(tài)擴(kuò)縮、服務(wù)發(fā)現(xiàn)、全鏈路日志分析等能力。以阿里巴巴達(dá)摩院語(yǔ)音對(duì)話平臺(tái)為例,對(duì)話服務(wù)、理解服務(wù)、問(wèn)答服務(wù),以及對(duì)話管理平臺(tái)都是基于SpringBoot和Docker技術(shù)棧的。
微服務(wù)應(yīng)該具備的功能微服務(wù),可以拆分為“微”和“服務(wù)”二字。“微”即小的意思,那到底多小才算“微”呢?可能不同的團(tuán)隊(duì)有不同的答案。從參與微服務(wù)的人數(shù)來(lái)講,單個(gè)微服務(wù)從架構(gòu)設(shè)計(jì)、代碼開發(fā)、測(cè)試、運(yùn)維的人數(shù)加起來(lái)是8~10人才算“微”。那么何為“服務(wù)”呢?按照“微服務(wù)”概念提出者M(jìn)artin Fowler給出的定義:“服務(wù)”是一個(gè)獨(dú)立運(yùn)行的單元組件,每個(gè)單元組件運(yùn)行在獨(dú)立的進(jìn)程中,組件與組件之間通常使用HTTP這種輕量級(jí)的通信機(jī)制進(jìn)行通信。
微服務(wù)具有以下的特點(diǎn)。
- 按照業(yè)務(wù)來(lái)劃分服務(wù),單個(gè)服務(wù)代碼量小,業(yè)務(wù)單一,易于維護(hù)。
- 每個(gè)微服務(wù)都有自己獨(dú)立的基礎(chǔ)組件,例如數(shù)據(jù)庫(kù)、緩存等,且運(yùn)行在獨(dú)立的進(jìn)程中。
- 微服務(wù)之間的通信是通過(guò)HTTP協(xié)議或者消息組件,且具有容錯(cuò)能力。
- 微服務(wù)有一套服務(wù)治理的解決方案,服務(wù)之間不耦合,可以隨時(shí)加入和剔除服務(wù)。單個(gè)微服務(wù)能夠集群化部署,并且有負(fù)載均衡的能力。
- 整個(gè)微服務(wù)系統(tǒng)應(yīng)該有一個(gè)完整的安全機(jī)制,包括用戶驗(yàn)證、權(quán)限驗(yàn)證、資源保護(hù)等。
- 整個(gè)微服務(wù)系統(tǒng)有鏈路追蹤的能力。
- 有一套完整的實(shí)時(shí)日志系統(tǒng)。
微服務(wù)具有以上這些特點(diǎn),那么微服務(wù)需要具備一些什么樣的功能呢?微服務(wù)的功能主要體現(xiàn)在以下幾個(gè)方面。
- 服務(wù)的注冊(cè)和發(fā)現(xiàn)。
- 服務(wù)的負(fù)載均衡。
- 服務(wù)的容錯(cuò)。
- 服務(wù)網(wǎng)關(guān)。
- 服務(wù)配置的統(tǒng)一管理。
- 鏈路追蹤。
- 實(shí)時(shí)日志。
阿里巴巴在2011年開源了Dubbo框架,雖然在2013年停止更新,但在2017年9月又重啟維護(hù)并發(fā)布了新版本。目前已有很多的公司將自己的業(yè)務(wù)建立在Dubbo之上,同時(shí)阿里云也推出了企業(yè)級(jí)分布式應(yīng)用服務(wù)EDAS,為Dubbo提供應(yīng)用托管。
Dubbo采用Zookeeper作為注冊(cè)中心,RPC作為服務(wù)調(diào)用方式,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。它與Spring無(wú)縫集成,基于服務(wù)提供方(服務(wù)端)與服務(wù)調(diào)用方(客戶端)角色構(gòu)建簡(jiǎn)單模型,其優(yōu)點(diǎn)是使用方便、學(xué)習(xí)成本低。
?① 服務(wù)提供方發(fā)布服務(wù)到服務(wù)注冊(cè)中心。 ② 服務(wù)消費(fèi)方從服務(wù)注冊(cè)中心訂閱服務(wù)。 ③ 注冊(cè)中心通知消息調(diào)用方服務(wù)已注冊(cè)。 ④ 服務(wù)消費(fèi)方調(diào)用已經(jīng)注冊(cè)的可用服務(wù)。 ⑤ 監(jiān)控計(jì)數(shù)。 Spring CloudSpring Cloud基于Spring Boot實(shí)現(xiàn),使用HTTP的RESTful風(fēng)格API作為調(diào)用方式。它所包含的多個(gè)子項(xiàng)目共同構(gòu)建了微服務(wù)架構(gòu)體系。
?Netflix Eureka
Spring Cloud 的服務(wù)注冊(cè)中心提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、負(fù)載均衡等功能。
Netflix Hystrix
當(dāng)某個(gè)服務(wù)發(fā)生故障之后,則觸發(fā)熔斷機(jī)制(Hystrix)向服務(wù)調(diào)用方返回結(jié)果標(biāo)識(shí)錯(cuò)誤,而不是一直等待服務(wù)提供方返回結(jié)果,這樣就不會(huì)使得線程因調(diào)用故障服務(wù)而被長(zhǎng)時(shí)間占用不釋放,避免了故障在分布式系統(tǒng)中的蔓延。
Netflix Zuul
代理各模塊提供的服務(wù),統(tǒng)一暴露給第三方應(yīng)用。提供動(dòng)態(tài)路由、監(jiān)控、彈性、全等的邊緣服務(wù)。
?
Config Server
分布式架構(gòu)下多微服務(wù)會(huì)產(chǎn)生非常多的配置文件,分布式配置中心(Config Server)將所有配置文件交由GIT或SVN進(jìn)行統(tǒng)一管理,避免出錯(cuò)。
?
Spring Boot
在使用Spring開發(fā)時(shí),通常需要完成Spring框架及其他第三方工具配置文件的編寫,非常麻煩。Spring Boot通過(guò)犧牲項(xiàng)目的自由度來(lái)減少配置的復(fù)雜度,約定一套規(guī)則,把這些框架都自動(dòng)配置集成好,從而達(dá)到“開箱即用”。
Spring Clould與Dubbo比較首先從微服務(wù)關(guān)注點(diǎn)來(lái)比較Spring Cloud和Dubbo兩大服務(wù)框架,如表1所示。
表1 從微服務(wù)關(guān)注點(diǎn)比較Spring Cloud和Dubbo
?Spring Cloud擁有很多的項(xiàng)目模塊,包含了微服務(wù)系統(tǒng)的方方面面。Dubbo是一個(gè)非常優(yōu)秀的服務(wù)治理和服務(wù)調(diào)用框架,但缺少很多功能模塊,例如網(wǎng)關(guān)、鏈路追蹤等。在項(xiàng)目模塊上,Spring Cloud占據(jù)著更大的優(yōu)勢(shì)。
Spring Cloud的更新速度非常塊,Camden.SR5版本發(fā)布于2017年2月6日,Camden.SR6版本發(fā)布于2017年3月10日,Dalston版本發(fā)布于2017年4月12日,基本每個(gè)月會(huì)發(fā)一次版本的迭代。從GitHub的代碼倉(cāng)庫(kù)來(lái)看,Spring Cloud幾乎每天都有更新。阿里巴巴于2011年10月開源了Dubbo,開源后的Dubbo發(fā)展迅速,大概每2~3個(gè)月有一次版本更新。然而,從在2013年3月開始,Dubbo暫停了版本更新,并只在2014年10月發(fā)布了一個(gè)小版本,修復(fù)了一個(gè)bug,之后長(zhǎng)期處于版本停止更新的狀態(tài)。直到2017年9月,阿里巴巴中間件部門重新組建了Dubbo團(tuán)隊(duì),把Dubbo列為重點(diǎn)開源項(xiàng)目,并在2017年9~11月期間,一直保持每月一次版本更新的頻率。
從學(xué)習(xí)成本上考慮,Dubbo的版本趨于穩(wěn)定,文檔完善,可以即學(xué)即用,沒(méi)有太大難度。Spring Cloud 基于Spring Boot開發(fā),需要開發(fā)者先學(xué)會(huì)Spring Boot。另外,Spring Cloud版本迭代快,需要快速跟進(jìn)學(xué)習(xí)。Spring Cloud文檔大多是英文的,要求學(xué)習(xí)者有一定的英文閱讀能力。此外,Spring Cloud文檔很多,不容易快速找到相應(yīng)的文檔。
從開發(fā)風(fēng)格上來(lái)講,Dubbo 更傾向于Spring Xml的配置方式,Dubbo官方也推薦這種方式。Spring Cloud基于Spring Boot,Spring Boot采用的是基于注解和JavaBean配置方式的敏捷開發(fā)。從開發(fā)速度上講,Spring Cloud具有更高的開發(fā)和部署速度。
最后,Spring Cloud 的通信方式大多數(shù)是基于HTTP Restful風(fēng)格的,服務(wù)與服務(wù)之間完全無(wú)關(guān)、無(wú)耦合。由于采用的是HTTP Rest,因此服務(wù)無(wú)關(guān)乎語(yǔ)言和平臺(tái),只需要提供相應(yīng)API接口,就可以相互調(diào)用。Dubbo 的通信方式基于遠(yuǎn)程調(diào)用,對(duì)接口、平臺(tái)和語(yǔ)言有強(qiáng)依賴性。如果需要實(shí)現(xiàn)跨平臺(tái)調(diào)用服務(wù),需要寫額外的中間件,這也是Dubbo存在的原因。
Dubbo和Spring Cloud擁有各自的優(yōu)缺點(diǎn)。Dubbo更易上手,并且廣泛使用于阿里巴巴的各大站點(diǎn),經(jīng)歷了“雙11”期間高并發(fā)、大流量的檢驗(yàn),Dubbo框架非常成熟和穩(wěn)定。Spring Cloud服務(wù)框架嚴(yán)格遵守Martin Fowler 提出的微服務(wù)規(guī)范,社區(qū)異常活躍,它很可能成為微服務(wù)架構(gòu)的標(biāo)準(zhǔn)。
微服務(wù)必讀書???
?《深入理解Spring Cloud與微服務(wù)構(gòu)建》
方志朋 著
點(diǎn)擊封面購(gòu)買紙書
?
CSDN博客專家、Spring Cloud中國(guó)社區(qū)聯(lián)合創(chuàng)始人全新作品。
本書共分16章,全面涵蓋了Spring Cloud構(gòu)建微服務(wù)相關(guān)的知識(shí)點(diǎn)。第1、2章詳細(xì)介紹了微服務(wù)架構(gòu)和Spring Cloud。第3、4章講解了用Spring Cloud構(gòu)建微服務(wù)的準(zhǔn)備工作。第5~12章以案例為切入點(diǎn),講解了Spring Cloud構(gòu)建微服務(wù)的基礎(chǔ)組件,包括Eureka、Ribbon、Feign、Hystrix、Zuul、Config、Sleuth、Admint等組件。第13~15章講述了使用Spring Cloud OAuth2來(lái)保護(hù)微服務(wù)系統(tǒng)的相關(guān)知識(shí)。第16章用一個(gè)綜合案例,全面講解了如何使用Spring Cloud構(gòu)建微服務(wù),可以作為實(shí)際開發(fā)的樣例工程。?
?
?《微服務(wù)分布式構(gòu)架開發(fā)實(shí)戰(zhàn)》
龔鵬 著
點(diǎn)擊封面購(gòu)買紙書
為了更快地實(shí)施微服務(wù),本書基于開源且穩(wěn)定的第三方工具,介紹如何構(gòu)建一個(gè)龐大且復(fù)雜的分布式系統(tǒng),用于滿足項(xiàng)目中的實(shí)際需求。每一個(gè)工具庫(kù)為了適應(yīng)更豐富的使用場(chǎng)景,通常都會(huì)把部分參數(shù)以配置文件的方式暴露出來(lái),同時(shí)提供用于開發(fā)環(huán)境的默認(rèn)配置。本書基于快速使用為主線路,盡可能多地講解配置參數(shù)的意義及之間的關(guān)系。在掌握足夠多的知識(shí)點(diǎn)后建立起對(duì)微服務(wù)分布式架構(gòu)的認(rèn)知,以便為探求更深層次的知識(shí)點(diǎn)做好鋪墊。
本書適合Java工程師、初級(jí)架構(gòu)師、大中專院校相關(guān)專業(yè)師生、Java培訓(xùn)班學(xué)員及獨(dú)立開發(fā)者與自學(xué)讀者使用。
??今日互動(dòng)
針對(duì)微服務(wù)你有哪方面的問(wèn)題急需解決?或者試讀圖書說(shuō)說(shuō)你的感受?截止時(shí)間5月3日17時(shí), 留言+轉(zhuǎn)發(fā) 本活動(dòng)到朋友圈,小編將抽獎(jiǎng)選出 5名 讀者 贈(zèng)送e讀版100元異步社區(qū)代金券一張,(留言點(diǎn)贊最多的自動(dòng)獲得一張)。推薦閱讀
2018年4月新書書單
異步圖書最全Python書單
一份程序員必備的算法書單
第一本Python神經(jīng)網(wǎng)絡(luò)編程圖書
?
?長(zhǎng)按二維碼,可以關(guān)注我們喲
每天與你分享IT好文。
在“異步圖書”后臺(tái)回復(fù)“關(guān)注”,即可免費(fèi)獲得2000門在線視頻課程;推薦朋友關(guān)注根據(jù)提示獲取贈(zèng)書鏈接,免費(fèi)得異步e讀版圖書一本。趕緊來(lái)參加哦!
點(diǎn)擊閱讀原文,查看更多
?閱讀原文
總結(jié)
以上是生活随笔為你收集整理的微服务选择Spring Cloud还是Dubbo?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: <第2.5个月>新店日记,shopee要
- 下一篇: 下载安装了zotero,为什么word没