![微服務架構的基礎框架選擇[材料相關]_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/27/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd1.gif)
![微服務架構的基礎框架選擇[材料相關]_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/27/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd2.gif)
![微服務架構的基礎框架選擇[材料相關]_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/27/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd3.gif)
![微服務架構的基礎框架選擇[材料相關]_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/27/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd/7418bbae-e33b-4872-a6c4-cb2fdeb83dfd4.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微服務架構的基礎框架選擇:Spring Cloud還是Dubbo最近一段時間不論互聯網還是傳統(tǒng)行業(yè),凡是涉及信息技術范疇的圈子幾乎都在討論微服務架構。第一次實施微服務架構時,我們應該選擇哪個基礎框架更好呢?Round 1:背景Dubbo,是阿里巴巴服務化治理的核心框架,并被廣泛應用于阿里巴巴集團的各成員站點。阿里巴巴近幾年對開源社區(qū)的貢獻不論在國內還是國外都是引人注目的,比如:JStorm 捐贈給 Apache 并加入 Apache 基金會等,為中國互聯網人爭足了面子,使得阿里巴巴在國人眼里已經從電商升級為一家科技公司了。Spring Cloud,從命名我們就可以知道,它是 Spring So
2、urce 的產物,Spring 社區(qū)的強大背書可以說是 Java 企業(yè)界最有影響力的組織了,除了 Spring Source 之外,還有 Pivotal 和 Netfix 是其強大的后盾與技術輸出。其中 Netflix 開源的整套微服務架構套件是 Spring Cloud 的核心。小結:如果拿 Dubbo 與 Netflix 套件做對比,前者在國內影響力較大,后者在國外影響力較大,我認為在背景上可以打個平手;但是若要與 Spring Cloud 做對比,由于 Spring Source 的加入,在背書上,Spring Cloud 略勝一籌。不過,英雄不問出處,在背景這一點上,不能作為選擇框架的
3、主要因素,當您一籌莫展的時候,可以作為參考依據。Round 2:社區(qū)活躍度我們選擇一個開源框架,社區(qū)的活躍度是我們極為關注的一個要點。社區(qū)越活躍,解決問題的速度越快,框架也會越來越完善,不然當我們碰到問題,就不得不自己解決。而對于團隊來說,也就意味著我們不得不自己去維護框架的源碼,這對于團隊來說也將會是一個很大的負擔。下面看看這兩個項目在 github 上的更新時間,Dubbo :最后更新時間為:2016年5月6日Spring Cloud :最后更新時間為:12分鐘前可以看到 Dubbo 的更新已經是幾個月前,并且更新頻率很低。而 Spring Cloud 的更新是12分鐘前,仍處于高速迭代的
4、階段。小結:在社區(qū)活躍度上,Spring Cloud 毋庸置疑的優(yōu)于 Dubbo,這對于沒有大量精力與財力維護這部分開源內容的團隊來說,Spring Cloud 會是更優(yōu)的選擇。Round 3:架構完整度或許很多人會說 Spring Cloud 和 Dubbo 的對比有點不公平,Dubbo 只是實現了服務治理,而 Spring Cloud 下面有 17 個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面,一定程度來說,Dubbo 只是 Spring Cloud Netflix 中的一個子集。但是在選擇框架上,方案完整度恰恰是一個需要重點關注的內容。根據 Mar
5、tin Fowler 對微服務架構的描述中,雖然該架構相較于單體架構有模塊化解耦、可獨立部署、技術多樣性等諸多優(yōu)點,但是由于分布式環(huán)境下解耦,也帶出了不少測試與運維復雜度。根據微服務架構在各方面的要素,看看 Spring Cloud 和 Dubbo 都提供了哪些支持。以上列舉了一些核心部件,大致可以理解為什么之前說 Dubbo 只是類似 Netflix 的一個子集了吧。當然這里需要申明一點,Dubbo 對于上表中總結為“無”的組件不代表不能實現,而只是 Dubbo 框架自身不提供,需要另外整合以實現對應的功能,比如: 分布式配置:可以使用淘寶的 diamond、百度的 disconf 來實現分
6、布式配置管理。但是 Spring Cloud 中的 Config 組件除了提供配置管理之外,由于其存儲可以使用 git,因此它天然的實現了配置內容的版本管理,可以完美的與應用版本管理整合起來。 服務跟蹤:可以使用京東開源的 Hydra 批量任務:可以使用當當開源的 Elastic-Job 雖然,Dubbo 自身只是實現了服務治理的基礎,其他為保證集群安全、可維護、可測試等特性方面都沒有很好的實現,但是幾乎大部分關鍵組件都能找到第三方開源來實現,這些組件主要來自于國內各家大型互聯網企業(yè)的開源產品。RPC vs REST另外,由于 Dubbo 是基礎框架,其實現的內容對于我們實施微服務架構是否合理
7、,也需要我們根據自身需求去考慮是否要修改,比如 Dubbo 的服務調用是通過 RPC 實現的,但是如果仔細拜讀過 Martin Fowler 的 Microservices 一文,其定義的服務間通信是 HTTP協議的 REST API。那么這兩種有何區(qū)別呢?先來說說,使用 Dubbo 的 RPC 來實現服務間調用的一些痛點: 服務提供方與調用方接口依賴方式太強:我們?yōu)槊總€微服務定義了各自的 service 抽象接口,并通過持續(xù)集成發(fā)布到私有倉庫中,調用方應用對微服務提供的抽象接口存在強依賴關系,因此不論開發(fā)、測試、集成環(huán)境都需要嚴格的管理版本依賴,才不會出現服務方與調用方的不一致導致應用無法編
8、譯成功等一系列問題,以及這也會直接影響本地開發(fā)的環(huán)境要求,往往一個依賴很多服務的上層應用,每天都要更新很多代碼并 install 之后才能進行后續(xù)的開發(fā)。若沒有嚴格的版本管理制度或開發(fā)一些自動化工具,這樣的依賴關系會成為開發(fā)團隊的一大噩夢。而 REST 接口相比 RPC 更為輕量化,服務提供方和調用方的依賴只是依靠一紙契約,不存在代碼級別的強依賴,當然 REST 接口也有痛點,因為接口定義過輕,很容易導致定義文檔與實際實現不一致導致服務集成時的問題,但是該問題很好解決,只需要通過每個服務整合 swagger,讓每個服務的代碼與文檔一體化,就能解決。所以在分布式環(huán)境下,REST 方式的服務依賴要
9、比 RPC 方式的依賴更為靈活。 服務對平臺敏感,難以簡單復用:通常我們在提供對外服務時,都會以 REST 的方式提供出去,這樣可以實現跨平臺的特點,任何一個語言的調用方都可以根據接口定義來實現。那么在 Dubbo 中我們要提供 REST 接口時,不得不實現一層代理,用來將 RPC 接口轉換成 REST 接口進行對外發(fā)布。若我們每個服務本身就以 REST 接口方式存在,當要對外提供服務時,主要在 API 網關中配置映射關系和權限控制就可實現服務的復用了。相信這些痛點也是為什么當當網在 dubbox(基于 Dubbo 的開源擴展)中增加了對 REST 支持的原因之一。小結:Dubbo 實現了服務
10、治理的基礎,但是要完成一個完備的微服務架構,還需要在各環(huán)節(jié)去擴展和完善以保證集群的健康,以減輕開發(fā)、測試以及運維各個環(huán)節(jié)上增加出來的壓力,這樣才能讓各環(huán)節(jié)人員真正的專注于業(yè)務邏輯。而 Spring Cloud 依然發(fā)揚了 Spring Source 整合一切的作風,以標準化的姿態(tài)將一些微服務架構的成熟產品與框架揉為一體,并繼承了 Spring Boot 簡單配置、快速開發(fā)、輕松部署的特點,讓原本復雜的架構工作變得相對容易上手一些。所以,如果選擇 Dubbo 請務必在各個環(huán)節(jié)做好整套解決方案的準備,不然很可能隨著服務數量的增長,整個團隊都將疲于應付各種架構上不足引起的困難。而如果選擇 Sprin
11、g Cloud,相對來說每個環(huán)節(jié)都已經有了對應的組件支持,可能有些也不一定能滿足你所有的需求,但是其活躍的社區(qū)與高速的迭代進度也會是你可以依靠的強大后盾。Round 4:文檔質量Dubbo 的文檔可以說在國內開源框架中算是一流的,非常全,并且講解的也非常深入,由于版本已經穩(wěn)定不再更新,所以也不太會出現不一致的情況,另外提供了中文與英文兩種版本,對于國內開發(fā)者來說,閱讀起來更加容易上手,這也是 dubbo 在國內更火一些的原因吧。Spring Cloud 由于整合了大量組件,文檔在體量上自然要比 dubbo 多很多,文檔內容上還算簡潔清楚,但是更多的是偏向整合,更深入的使用方法還是需要查看其整合
12、組件的詳細文檔。另外由于 Spring Cloud 基于 Spring Boot,很多例子相較于傳統(tǒng) Spring 應用要簡單很多(因為自動化配置,很多內容都成了約定的默認配置),這對于剛接觸的開發(fā)者可能會有些不適應,比較建議了解和學習 Spring Boot 之后再使用 Spring Cloud,不然可能會出現很多一知半解的情況。小結:雖然 Spring Cloud 的文檔量大,但是如果使用 Dubbo 去整合其他第三方組件,實際也是要去閱讀大量第三方組件文檔的,所以在文檔量上,我覺得區(qū)別不大。對于文檔質量,由于 Spring Cloud 的迭代很快,難免會出現不一致的情況,所以在質量上我認為 Dubbo 更好一些。而對于文檔語言上,Dubbo 自然對國內開發(fā)團隊來說更有優(yōu)勢??偨Y通過上面再幾個環(huán)節(jié)上的分析,相信大家對 Dubbo 和 Spring Cloud 有了一個初步的了解。就我個人對這兩個框架的使用經驗和理解,打個不恰當的比喻:使用 Dubbo 構建的微服務架構就像組裝電腦,各環(huán)節(jié)我們的選擇自由度很高,但是最終結果很有可能因為一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻間忠誠承諾與粉絲影響力合作合同
- 燒傷面積評估與護理要點
- 網絡直播導播臺租賃及現場燈光音響調試服務合同
- 藝術培訓機構教室租賃與課程研發(fā)合同
- 婚后家庭財產共有及分割管理細則協議
- 高清體育賽事直播權授權及賽事周邊產品開發(fā)協議
- 版權侵權賠償補充協議書
- 票務退改簽服務補充協議
- 母嬰護理服務質量規(guī)范執(zhí)行與客戶權益維護協議
- 網絡教育平臺兼職教師答疑合同
- 智慧泵站標準化建設解決方案-v2.0
- 2021年山東省青島市中考數學試卷
- 金屬非金屬地下礦山六大系統(tǒng)建設規(guī)范解析
- GB 24544-2009墜落防護速差自控器
- 小學語文人教三年級下冊 《小海倫的秘密》整本書導讀課(改)
- 酒類行業(yè)中國酒類品類創(chuàng)新研究報告:年輕人的酒
- 新中國的重大科技成就(精編版)
- 食堂競標書范文(精選十四篇)
- 檢維修作業(yè)許可證
- 公司法自學輔導顧功耘北京大學出版社
- 橋梁施工基礎知識培訓圖文并茂
評論
0/150
提交評論