什么是 Spring Cloud?
Spring Cloud 是微服務系統架構的一站式解決方案,是各個微服務架構落地技術的集合體,讓架構師、 開發者在使用微服務理念構建應用系統的時候, 面對各個環節的問題都可以找到相應的組件來處理,比如我們構建微服務的過程中需要用到的注冊中心、配置中心、負載均衡、斷路器、網關等,Spring Cloud 都給我們提供了成熟的組件供我們來使用。
Spring Cloud 官網傳送門
Spring Cloud 官網
Spring Cloud 和 Spring Boot 的版本對應關系
Spring Cloud 的組件
Spring Cloud 的組件非常多,其中有部分組件已經不在更新,不在更新的組件是可以繼續使用的,不過不在更新的組件基本都有比較好的替代組件,由于 Spring Cloud 的組件非常多,這里簡單的分享一些熱門常用的組件。
Spring Cloud Netflix 的五大組件:
- Eureka:注冊中心,用于服務注冊和發現,它提供了一個服務注冊中心、服務發現的客戶端,提供了一個可以查看所有注冊的服務的界面,早期的微服務基本都是使用 Eureka 作為注冊中心,現在基本被 Nacos 取代。
- Zuul:網關,客戶端請求通過網關訪問后臺的服務,它可以使用一定的路由配置來判斷某一個 URL 由哪個服務來處理,并從 Eureka 獲取注冊的服務來轉發請求,早期的微服務基本都是使用 Zuul 作為網關,現在基本被 Gateway 取代。
- Ribbon:負載均衡,網關將一個請求轉發給某一個服務的時候,如果這個服務啟動了多個實例,就會通過 Ribbon 來通過一定的負載均衡策略來發送給某個服務實例。
- Feign:微服務之間的相互訪問,使用 Feign 客戶端來訪問,如果某一個服務有多個實例的時候,默認會使用Ribbon來實現負載均衡。
- Hystrix:微服務容錯組件,提供了開箱即用的服務降級、熔斷、監控等能力,Hystrix 可以通過短路器監控,返回一個可以處理的響應結果,保證服務調用線程不會長時間被占用,避免故障蔓延引發雪崩。
Spring Cloud Alibaba 組件
- Nacos:我們使用 Nacos 最常用的功能就是注冊中心,Nacos 除了注冊中心之外還可以當配置中心、DNS服務來使用,也就是說 Nacos 可以完成服務發現、配置管理、DNS服務,一個組件可以完成 Config、Eureka、Bus 三個組件的功能。
- Sentinel:直譯是哨兵的意思,Sentinel 主要以流量為切入點,從流量控制、熔斷降級、系統負載等多個維度來幫助用戶提升服務的穩定性。
- dubbo:Alibaba 提供了spring-cloud-starter-dubbo,對 dubbo 進行了封裝,方便我們更好的讓 dubbo 和 Spring Cloud 其他組件進行集成使用。
- RocketMQ:Alibaba 開源的分布式消息系統,它基于高可用分布式集群技術,提供低延遲、高穩定性的消息發布和訂閱服務,Alibaba 提供了spring-cloud-starter-stream-rocketmq,方便讓 RocketMQ 和 Spring Cloud 的其他組件集成。
其他組件
- Spring Cloud Gateway:網關組件,目前市場上最流行的網關服務,功能強大豐富,性能好,官方測試性能是 Zuul 的1.6倍,能與 SpringCloud 生態很好兼容,深得廣大開發者的喜愛。
- Spring Cloud OpenFeign:同Feign是一樣的,是一個遠程調用框架,Feign 已經停止更新,OpenFeign 在 Feign的基礎上添加了對 Spring MVC 注釋的支持,OpenFeign 的功能更加強大。
- Spring Cloud Consul:Consul 是 HashiCorp 公司推出的開源工具,用于服務發現與配置,可以用作注冊中心和配置中心,與其它分布式服務注冊與發現的方案,Consul 更加全面,內置了服務注冊與發現框架、分布一致性協議實現、健康檢查、Key/Value 存儲、多數據中心方案,不再需要依賴其它工具, 并且使用起來也非常簡單,Consul 安裝包含一個可執行文件,部署簡單,因為 Consul 是使用 go 語言編寫的,移植性強。
- Spring Cloud Config:Config 是一個配置中心組件,它包含了 client 和 server 兩個部分,server 端提供配置文件的存儲、以接口的形式將配置文件的內容提供出去,client 端通過接口獲取數據、并依據此數據初始化自己的應用。
- Spring Cloud Bus:Bus 服務總線組件,使用輕量級的消息代理來連接微服務架構中的各個服務,可以將其用于廣播狀態更改(例如配置中心配置更改)或其他管理指令。
- Spring Cloud Sleuth:Sleuth 是 Spring Cloud 提供的分布式跟蹤解決方案,Sleuth 提供了鏈路追蹤、性能分析、數據分析、優化鏈路、可視化錯誤分析等。
總結:本篇簡單簡單列出 Spring Cloud 相關組件,先對 Spring Cloud 組件有一個簡單的認知,方面我們繼續深入學習 Spring Cloud 知識。
如有不正確的地方請各位指出糾正。