国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
微服務架構的基礎框架選擇:Spring Cloud還是Dubbo?

最近一段時間不論互聯網還是傳統(tǒng)行業(yè),凡是涉及信息技術范疇的圈子幾乎都在討論微服務架構。近期也看到各大技術社區(qū)開始組織一些沙龍和論壇來分享Spring Cloud的相關實施經驗,這對于最近正在整理Spring Cloud相關套件內容與實例應用的我而言,還是有不少激勵的。

目前,Spring Cloud在國內的知名度并不高,在前陣子的求職過程中,與一些互聯網公司的架構師、技術VP或者CTO在交流時,有些甚至還不知道該項目的存在??赡苓@也與國內阿里巴巴開源服務治理框架Dubbo有一定的關系,除了Dubbo本身較為完善的中文文檔之外,不少科技公司的架構師均出自阿里系,所以就目前情況看,短期國內還是Dubbo的天下。

那么第一次實施微服務架構時,我們應該選擇哪個基礎框架更好呢?

以下內容均為作者個人觀點,知識面有限,如有不對,純屬正常,不喜勿噴。

Round 1:背景


Dubbo,是阿里巴巴服務化治理的核心框架,并被廣泛應用于阿里巴巴集團的各成員站點。阿里巴巴近幾年對開源社區(qū)的貢獻不論在國內還是國外都是引人注目的,比如:JStorm捐贈給Apache并加入Apache基金會等,為中國互聯網人爭足了面子,使得阿里巴巴在國人眼里已經從電商升級為一家科技公司了。

Spring Cloud,從命名我們就可以知道,它是Spring Source的產物,Spring社區(qū)的強大背書可以說是Java企業(yè)界最有影響力的組織了,除了Spring Source之外,還有Pivotal和Netfix是其強大的后盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。

小結:如果拿Dubbo與Netflix套件做對比,前者在國內影響力較大,后者在國外影響力較大,我認為在背景上可以打個平手;但是若要與Spring Cloud做對比,由于Spring Source的加入,在背書上,Spring Cloud略勝一籌。不過,英雄不問出處,在背景這一點上,不能作為選擇框架的主要因素,當您一籌莫展的時候,可以作為參考依據。

Round 2:社區(qū)活躍度


我們選擇一個開源框架,社區(qū)的活躍度是我們極為關注的一個要點。社區(qū)越活躍,解決問題的速度越快,框架也會越來越完善,不然當我們碰到問題,就不得不自己解決。而對于團隊來說,也就意味著我們不得不自己去維護框架的源碼,這對于團隊來說也將會是一個很大的負擔。

下面看看這兩個項目在github上的更新時間,下面截圖自2016年7月30日:


最后更新時間為:2016年5月6日

最后更新時間為:12分鐘前

可以看到Dubbo的更新已經是幾個月前,并且更新頻率很低。而Spring Cloud的更新是12分鐘前,仍處于高速迭代的階段。

小結:在社區(qū)活躍度上,Spring Cloud毋庸置疑的優(yōu)于Dubbo,這對于沒有大量精力與財力維護這部分開源內容的團隊來說,Spring Cloud會是更優(yōu)的選擇。

Round 3:架構完整度


或許很多人會說Spring Cloud和Dubbo的對比有點不公平,Dubbo只是實現了服務治理,而Spring Cloud下面有17個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面,一定程度來說,Dubbo只是Spring Cloud Netflix中的一個子集。但是在選擇框架上,方案完整度恰恰是一個需要重點關注的內容。

根據Martin Fowler對微服務架構的描述中,雖然該架構相較于單體架構有模塊化解耦、可獨立部署、技術多樣性等諸多優(yōu)點,但是由于分布式環(huán)境下解耦,也帶出了不少測試與運維復雜度。

根據微服務架構在各方面的要素,看看Spring Cloud和Dubbo都提供了哪些支持。

DubboSpring Cloud
服務注冊中心ZookeeperSpring Cloud Netflix Eureka
服務調用方式RPCREST API
服務網關Spring Cloud Netflix Zuul
斷路器不完善Spring Cloud Netflix Hystrix
分布式配置Spring Cloud Config
服務跟蹤Spring Cloud Sleuth
消息總線Spring Cloud Bus
數據流Spring Cloud Stream
批量任務Spring Cloud Task
.........

以上列舉了一些核心部件,大致可以理解為什么之前說Dubbo只是類似Netflix的一個子集了吧。當然這里需要申明一點,Dubbo對于上表中總結為“無”的組件不代表不能實現,而只是Dubbo框架自身不提供,需要另外整合以實現對應的功能,比如:

  • 分布式配置:可以使用淘寶的diamond、百度的disconf來實現分布式配置管理。但是Spring Cloud中的Config組件除了提供配置管理之外,由于其存儲可以使用git,因此它天然的實現了配置內容的版本管理,可以完美的與應用版本管理整合起來。
  • 服務跟蹤:可以使用京東開源的Hydra
  • 批量任務:可以使用當當開源的Elastic-Job
  • ……

雖然,Dubbo自身只是實現了服務治理的基礎,其他為保證集群安全、可維護、可測試等特性方面都沒有很好的實現,但是幾乎大部分關鍵組件都能找到第三方開源來實現,這些組件主要來自于國內各家大型互聯網企業(yè)的開源產品。

RPC vs REST

另外,由于Dubbo是基礎框架,其實現的內容對于我們實施微服務架構是否合理,也需要我們根據自身需求去考慮是否要修改,比如Dubbo的服務調用是通過RPC實現的,但是如果仔細拜讀過Martin Fowler的microservices一文,其定義的服務間通信是HTTP協議的REST API。那么這兩種有何區(qū)別呢?

先來說說,使用Dubbo的RPC來實現服務間調用的一些痛點:

  • 服務提供方與調用方接口依賴方式太強:我們?yōu)槊總€微服務定義了各自的service抽象接口,并通過持續(xù)集成發(fā)布到私有倉庫中,調用方應用對微服務提供的抽象接口存在強依賴關系,因此不論開發(fā)、測試、集成環(huán)境都需要嚴格的管理版本依賴,才不會出現服務方與調用方的不一致導致應用無法編譯成功等一系列問題,以及這也會直接影響本地開發(fā)的環(huán)境要求,往往一個依賴很多服務的上層應用,每天都要更新很多代碼并install之后才能進行后續(xù)的開發(fā)。若沒有嚴格的版本管理制度或開發(fā)一些自動化工具,這樣的依賴關系會成為開發(fā)團隊的一大噩夢。而REST接口相比RPC更為輕量化,服務提供方和調用方的依賴只是依靠一紙契約,不存在代碼級別的強依賴,當然REST接口也有痛點,因為接口定義過輕,很容易導致定義文檔與實際實現不一致導致服務集成時的問題,但是該問題很好解決,只需要通過每個服務整合swagger,讓每個服務的代碼與文檔一體化,就能解決。所以在分布式環(huán)境下,REST方式的服務依賴要比RPC方式的依賴更為靈活。
  • 服務對平臺敏感,難以簡單復用:通常我們在提供對外服務時,都會以REST的方式提供出去,這樣可以實現跨平臺的特點,任何一個語言的調用方都可以根據接口定義來實現。那么在Dubbo中我們要提供REST接口時,不得不實現一層代理,用來將RPC接口轉換成REST接口進行對外發(fā)布。若我們每個服務本身就以REST接口方式存在,當要對外提供服務時,主要在API網關中配置映射關系和權限控制就可實現服務的復用了。

相信這些痛點也是為什么當當網在dubbox(基于Dubbo的開源擴展)中增加了對REST支持的原因之一。

小結:Dubbo實現了服務治理的基礎,但是要完成一個完備的微服務架構,還需要在各環(huán)節(jié)去擴展和完善以保證集群的健康,以減輕開發(fā)、測試以及運維各個環(huán)節(jié)上增加出來的壓力,這樣才能讓各環(huán)節(jié)人員真正的專注于業(yè)務邏輯。而Spring Cloud依然發(fā)揚了Spring Source整合一切的作風,以標準化的姿態(tài)將一些微服務架構的成熟產品與框架揉為一體,并繼承了Spring Boot簡單配置、快速開發(fā)、輕松部署的特點,讓原本復雜的架構工作變得相對容易上手一些(如果您讀過我之前關于Spring Cloud的一些核心組件使用的文章,應該能體會這些讓人興奮而激動的特性,傳送門)。所以,如果選擇Dubbo請務必在各個環(huán)節(jié)做好整套解決方案的準備,不然很可能隨著服務數量的增長,整個團隊都將疲于應付各種架構上不足引起的困難。而如果選擇Spring Cloud,相對來說每個環(huán)節(jié)都已經有了對應的組件支持,可能有些也不一定能滿足你所有的需求,但是其活躍的社區(qū)與高速的迭代進度也會是你可以依靠的強大后盾。

Round 4:文檔質量


Dubbo的文檔可以說在國內開源框架中算是一流的,非常全,并且講解的也非常深入,由于版本已經穩(wěn)定不再更新,所以也不太會出現不一致的情況,另外提供了中文與英文兩種版本,對于國內開發(fā)者來說,閱讀起來更加容易上手,這也是dubbo在國內更火一些的原因吧。

Spring Cloud由于整合了大量組件,文檔在體量上自然要比dubbo多很多,文檔內容上還算簡潔清楚,但是更多的是偏向整合,更深入的使用方法還是需要查看其整合組件的詳細文檔。另外由于Spring Cloud基于Spring Boot,很多例子相較于傳統(tǒng)Spring應用要簡單很多(因為自動化配置,很多內容都成了約定的默認配置),這對于剛接觸的開發(fā)者可能會有些不適應,比較建議了解和學習Spring Boot之后再使用Spring Cloud,不然可能會出現很多一知半解的情況。

小結:雖然Spring Cloud的文檔量大,但是如果使用Dubbo去整合其他第三方組件,實際也是要去閱讀大量第三方組件文檔的,所以在文檔量上,我覺得區(qū)別不大。對于文檔質量,由于Spring Cloud的迭代很快,難免會出現不一致的情況,所以在質量上我認為Dubbo更好一些。而對于文檔語言上,Dubbo自然對國內開發(fā)團隊來說更有優(yōu)勢。

總結


通過上面再幾個環(huán)節(jié)上的分析,相信大家對Dubbo和Spring Cloud有了一個初步的了解。就我個人對這兩個框架的使用經驗和理解,打個不恰當的比喻:使用Dubbo構建的微服務架構就像組裝電腦,各環(huán)節(jié)我們的選擇自由度很高,但是最終結果很有可能因為一條內存質量不行就點不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩(wěn)定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎有足夠的了解。

從目前Spring Cloud的被關注度和活躍度上來看,很有可能將來會成為微服務架構的標準框架。所以,Spring Cloud的系列文章,我會繼續(xù)寫下去。也歡迎各位朋友一起交流,共同進步。

【一些文章與示例的匯總】:http://git.oschina.net/didispace/SpringBoot-Learning

著作權歸作者所有

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
聊聊Dubbo(一):為何選擇Dubbo
幾種微服務框架調研報告
微服務架構下的核心話題 (三):微服務架構的技術選型
Spring Cloud 微服務框架技術標準分析
14|開源RPC框架如何選型?
史上最強Dubbo面試26題和答案:核心組件 服務治理 架構設計等
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服