Spring Cloud完全碾壓Dubbo?架構師笑而不語
編輯 | 關賀宇
微服務是互聯網技術飛速變化以及傳統架構無法適應多樣化需求的背景下誕生的產物。通常情況下,互聯網產品具有用戶體量大,需求變化多樣且個性化的特點。傳統的單體服務已經沒辦法滿足開發者的需求,微服務應運而生。
在認識微服務之前,需要先了解一下與微服務對應的單體式架構。在單體式架構中,系統通常採用分層架構模式,按技術維度對系統進行劃分,比如持久化層、業務邏輯層、表示層。但是單體式架構存在很多問題,比如系統間以 API 的形式互相訪問,耦合緊密導致難以維護;在系統負載增加時,難以進行水平擴展等等。
為了解決這些問題,微服務架構應運而生。微服務提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務與服務間採用輕量級的通信機制(通常是基於 HTTP 的 RESTful API)。每個服務都圍繞著具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。
Spring Cloud 和 Dubbo 之爭
互聯網圈對微服務架構選擇的爭論由來已久,開發者對二者的討論也一直繼續,近些年 Spring Cloud 有碾壓 Dubbo 的趨勢,你怎麼看?
通信方式
Spring Cloud 採用 HTTP 的 REST 方式,而不是 Dubbo 的 RPC 通信方式。這兩種通信方式各有優劣。有人說,REST 相比 RPC 更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
這麼說,Spring Cloud 更好?
技術發展
從技術發展的角度來講,Dubbo 最開始的理念非常先進,解決了各大互聯網公司服務治理的問題,中小公司也從中受益不少。經過了這麼多年的發展,互聯網行業不斷湧現更多先進的技術和理念,Dubbo 卻有點停滯不前。
Spring 推出 Spring Boot/Cloud 也是基於自身的很多原因。Spring 最初推崇的輕量級框架,後來因為集成項目越來越多,配置文件也越來越混亂,原有的理念與現實產生了衝突。於是 Spring Cloud 才產生。
也就是 Spring Cloud 更有前景么?
不足
Dubbo 的不足在於:Registry 嚴重依賴第三方組件(zookeeper 或者 redis),當這些組件出現問題時,服務調用很快就會中斷。只支持 RPC 調用。使得服務提供方與調用方在代碼上產生了強依賴,服務提供者需要不斷將包含公共代碼的 jar 包打包出來供消費者使用。一旦打包出現問題,就會導致服務調用出錯。Dubbo 現在已經停止維護了,對於技術發展的新需求,需要由開發者自行拓展升級。這對於很多想要採用微服務架構的中小軟體組織,顯然是不太合適的。
相反 Spring Cloud 自從發展到現在,仍然在不斷的高速發展,從 github 上提交代碼的頻度和發布版本的時間間隔就可以看出,後期 Spring Cloud 的發展會更加完善和穩定。
Dubbo 完全被碾壓?
針對微服務框架的選擇以及微服務背後的解決方案,我們近期要辦一件大大……大事!
QCon 北京 2019 將於 5 月 6-8 日在北京·國際會議中心盛大開幕,本屆 QCon 全球軟體開發大會也將開放多個【限額免費】專場。邀請一線技術專家,為大家帶來在人工智慧實踐、微服務架構與 DevOps 實踐、高效開發與產品優化、業務架構與安全等方面的解決方案,用自己的血淚教訓帶給開發者新的思考!
專場日程
※開發者可能低估了容器部署的複雜性
※面對億級並發,你會怎麼設計架構?
TAG:InfoQ |