Spring Cloud簡介,微服務架構,以及與Dubbo的詳細比較

什麼是Spring Cloud

Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架集成進來,從而簡化了開發者的代碼量。

爲什麼需要Spring Cloud

Spring Cloud 是整個 Spring 家族中新的成員,要致力於分佈式系統、雲服務的框架。

Spring Cloud 爲開發人員提供了快速構建分佈式系統中一些常見模式的工具,例如:

  • 配置管理
  • 服務註冊與發現
  • 斷路器
  • 智能路由
  • 服務間調用
  • 負載均衡
  • 微代理
  • 控制總線
  • 一次性令牌
  • 全局鎖
  • 領導選舉
  • 分佈式會話
  • 集羣狀態
  • 分佈式消息

一句話概括:Spring Cloud是分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術集合,俗稱微服務全家桶。

微服務架構使用場景

首先,我們需要看看一般的微服務架構需要的功能或使用場景:

1、我們把整個系統根據業務拆分成幾個子系統。

2、每個子系統可以部署多個應用,多個應用之間使用負載均衡。

3、需要一個服務註冊中心,所有的服務都在註冊中心註冊,負載均衡也是通過在註冊中心註冊的服務來使用一定策略來實現。

4、所有的客戶端都通過同一個網關地址訪問後臺的服務,通過路由配置,網關來判斷一個URL請求由哪個服務處理。請求轉發到服務上的時候也使用負載均衡。

5、服務之間有時候也需要相互訪問。例如有一個用戶模塊,其他服務在處理一些業務的時候,要獲取用戶服務的用戶數據。

6、需要一個斷路器,及時處理服務調用時的超時和錯誤,防止由於其中一個服務的問題而導致整體系統的癱瘓。

7、還需要一個監控功能,監控每個服務調用花費的時間等。

總之,Spring Cloud只是微服務架構的一種解決方案,下面我們再看看微服務架構同類產品比較。

file

SpringCloud與同類Dubbo微服務比較

目前市面上主要就是SpringCloud VS Dubbo。

1.Spring Cloud的優缺點

Spring Cloud主要優點:

  • 集大成者,Spring Cloud 包含了微服務架構的方方面面。
  • 約定優於配置,基於註解,沒有配置文件。
  • 輕量級組件,Spring Cloud 整合的組件大多比較輕量級,且都是各自領域的佼佼者。
  • 開發簡便,Spring Cloud 對各個組件進行了大量的封裝,從而簡化了開發。
  • 開發靈活,Spring Cloud 的組件都是解耦的,開發人員可以靈活按需選擇組件。

Spring Cloud的缺點:

  • 項目結構複雜,每一個組件或者每一個服務都需要創建一個項目。
  • 部署門檻高,項目部署需要配合 Docker 等容器技術進行集羣部署,而要想深入瞭解 Docker,學習成本高。
2.Spring Cloud 對比Dubbo

Dubbo,是阿里巴巴服務化治理的核心框架,並被廣泛應用於阿里巴巴集團的各成員站點。

1)社區活躍度

在社區活躍度上,Spring Cloud毋庸置疑的優於Dubbo,這對於沒有大量精力與財力維護這部分開源內容的團隊來說,Spring Cloud會是更優的選擇。

2)架構完整度

file

上圖可以看出,Spring Cloud 比較全面,Spring Cloud下面有17個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面。

而 Dubbo 由於只實現了服務治理,需要集成其他模塊,需要單獨引入,增加了學習成本和集成成本。一定程度來說,Dubbo只是Spring Cloud Netflix中的一個子集。

3)文檔質量

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

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

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

3.對比總結

通過上面再幾個環節上的分析,相信大家對Dubbo和Spring Cloud有了一個初步的瞭解。

就我個人對這兩個框架的使用經驗和理解,打個不恰當的比喻:

使用Dubbo構建的微服務架構就像組裝電腦,各環節我們的選擇自由度很高,但是最終結果很有可能因爲一條內存質量不行就點不亮了,總是讓人不怎麼放心,但是如果你是一名高手,那這些都不是問題。

而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎有足夠的瞭解。

以上就是Spring Cloud的介紹,後續詳解Spring Cloud的架構設計和實踐步驟。

file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章