Spring cloud是什麼? 核心總結
- 2022 年 2 月 23 日
- 筆記
Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架集成進來,從而簡化了開發者的程式碼量。
Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務發現、服務網關、服務路由、鏈路追蹤等。Spring Cloud 並不重複造輪子,而是將市面上開發得比較好的模組集成進去,進行封裝,從而減少了各模組的開發成本。換句話說:Spring Cloud 提供了構建分散式系統所需的「全家桶」。
Spring Cloud 優缺點
其主要優點有:
- 集大成者,Spring Cloud 包含了微服務架構的方方面面。
- 約定優於配置,基於註解,沒有配置文件。
- 輕量級組件,Spring Cloud 整合的組件大多比較輕量級,且都是各自領域的佼佼者。
- 開發簡便,Spring Cloud 對各個組件進行了大量的封裝,從而簡化了開發。
- 開發靈活,Spring Cloud 的組件都是解耦的,開發人員可以靈活按需選擇組件。
缺點:
- 項目結構複雜,每一個組件或者每一個服務都需要創建一個項目。
- 部署門檻高,項目部署需要配合 Docker 等容器技術進行集群部署,而要想深入了解 Docker,學習成本高。
Spring Cloud 和 Dubbo 對比
Dubbo 只是實現了服務治理,而 Spring Cloud 實現了微服務架構的方方面面,服務治理只是其中的一個方面。下面通過一張圖對其進行比較:
可以看出,Spring Cloud 比較全面,而 Dubbo 由於只實現了服務治理,需要集成其他模組,需要單獨引入,增加了學習成本和集成成本。
五大常用組件
- 服務發現——Netflix Eureka
- 客服端負載均衡——Netflix Ribbon
- 斷路器——Netflix Hystrix
- 服務網關——Netflix Zuul
- 分散式配置——Spring Cloud Config
Eureka
作用:實現服務治理(服務註冊與發現)
簡介:Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理模組。
由兩個組件組成:Eureka服務端和Eureka客戶端。
Eureka服務端用作服務註冊中心。支援集群部署。
Eureka客戶端是一個java客戶端,用來處理服務註冊與發現。
在應用啟動時,Eureka客戶端向服務端註冊自己的服務資訊,同時將服務端的服務資訊快取到本地。客戶端會和服務端周期性的進行心跳交互,以更新服務租約和服務資訊。
Ribbon
作用:Ribbon,主要提供客戶側的軟體負載均衡演算法。
簡介:Spring Cloud Ribbon是一個基於HTTP和TCP的客戶端負載均衡工具,它基於Netflix Ribbon實現。通過Spring Cloud的封裝,可以讓我們輕鬆地將面向服務的REST模版請求自動轉換成客戶端負載均衡的服務調用。
注意看上圖,關鍵點就是將外界的rest調用,根據負載均衡策略轉換為微服務調用。Ribbon有比較多的負載均衡策略,以後專門講解。
Hystrix
作用:斷路器,保護系統,控制故障範圍。
簡介:為了保證其高可用,單個服務通常會集群部署。由於網路原因或者自身的原因,服務並不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現執行緒阻塞,此時若有大量的請求湧入,Servlet容器的執行緒資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的「雪崩」效應。
Zuul
作用:api網關,路由,負載均衡等多種作用
簡介:類似nginx,反向代理的功能,不過netflix自己增加了一些配合其他組件的特性。
在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就創建了一面牆,這面牆直接與調用方通訊進行許可權控制,後將請求均衡分發給後台服務端。
Config
作用:配置管理
簡介:SpringCloud Config提供伺服器端和客戶端。伺服器存儲後端的默認實現使用git,因此它輕鬆支援標籤版本的配置環境,以及可以訪問用於管理內容的各種工具。
這個還是靜態的,得配合Spring Cloud Bus實現動態的配置更新。