Spring Cloud 是一款基于 Spring Boot 實現(xiàn)的微服務框架。Spring Cloud 源自 Spring 社區(qū),主要由?Pivotal 和 Netflix 兩大公司提供技術迭代和維護。
隨著微服務的火爆流行,國內(nèi)外各大互聯(lián)網(wǎng)公司都相繼分享了他們在微服務架構(gòu)中,針對不同場景出現(xiàn)的各種問題的解決方案和開源框架。
- 服務治理:阿里巴巴開源的 Dubbo 和當當網(wǎng)在其基礎上擴展出來的 DubboX、Netflix 的 Eureka 以及 Apache 的 Consul 等。
- 分布式配置管理:百度的 Disconf、Netflix 的 Archaius、360 的 QConf、攜程的 Apollo 以及 Spring Cloud 的 Config?等。
- 批量任務:當當網(wǎng)的 Elastic-Job、LinkedIn 的 Azkaban 以及 Spring Cloud 的 Task 等。
- 服務跟蹤:京東的 Hydra、Spring Cloud 的 Sleuth 以及 Twitter 的 Zipkin 等。
- ……
以上這些微服務框架或解決方案都具有以下 2 個特點:
- 對于同一個微服務問題,各互聯(lián)網(wǎng)公司給出的解決方案各不相同。
- 一個微服務框架或解決方案都只能解決微服務中的某一個或某幾個問題,對于其他問題則無能為力。
這種情況下,搭建一套微分布式微服務系統(tǒng),就需要針對這些問題從諸多的解決方案中做出選擇,這使得我們不得不將大量的精力花費在前期的調(diào)研、分析以及實驗上。
Spring Cloud 被稱為構(gòu)建分布式微服務系統(tǒng)的“全家桶”,它并不是某一門技術,而是一系列微服務解決方案或框架的有序集合。它將市面上成熟的、經(jīng)過驗證的微服務框架整合起來,并通過 Spring Boot 的思想進行再封裝,屏蔽調(diào)其中復雜的配置和實現(xiàn)原理,最終為開發(fā)人員提供了一套簡單易懂、易部署和易維護的分布式系統(tǒng)開發(fā)工具包。
Spring Cloud 中包含了 spring-cloud-config、spring-cloud-bus 等近 20 個子項目,提供了服務治理、服務網(wǎng)關、智能路由、負載均衡、斷路器、監(jiān)控跟蹤、分布式消息隊列、配置管理等領域的解決方案。
Spring Cloud 并不是一個拿來即可用的框架,它是一種微服務規(guī)范,共有以下 2 代實現(xiàn):
- 第一代實現(xiàn):Spring Cloud Netflix?
- 第二代實現(xiàn):Spring Cloud Alibaba?
這里我們介紹的 Spring Cloud 特指 Spring Cloud 的第一代實現(xiàn)。
Spring Cloud 常用組件
Spring Cloud?包括 Spring Cloud Gateway、Spring Cloud Config、Spring Cloud Bus 等近 20 個服務組件,這些組件提供了服務治理、服務網(wǎng)關、智能路由、負載均衡、熔斷器、監(jiān)控跟蹤、分布式消息隊列、配置管理等領域的解決方案。
Spring Cloud 的常用組件如下表所示。
Spring Cloud 組件 | 描述 |
---|---|
Spring Cloud Netflix Eureka | Spring Cloud?Netflix 中的服務治理組件,包含服務注冊中心、服務注冊與發(fā)現(xiàn)機制的實現(xiàn)。 |
Spring Cloud Netflix Ribbon | Spring Cloud? Netflix 中的服務調(diào)用和客戶端負載均衡組件。 |
Spring Cloud Netflix Hystrix | 人稱“豪豬哥”,Spring Cloud?Netflix?的容錯管理組件,為服務中出現(xiàn)的延遲和故障提供強大的容錯能力。 |
Spring Cloud Netflix Feign | 基于 Ribbon 和 Hystrix 的聲明式服務調(diào)用組件。 |
Spring Cloud Netflix Zuul | Spring?Cloud Netflix 中的網(wǎng)關組件,提供了智能路由、訪問過濾等功能。 |
Spring Cloud Gateway | 一個基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發(fā)的網(wǎng)關框架,它使用 Filter 鏈的方式提供了網(wǎng)關的基本功能,例如安全、監(jiān)控/指標和限流等。 |
Spring Cloud Config | Spring Cloud 的配置管理工具,支持使用 Git 存儲配置內(nèi)容,實現(xiàn)應用配置的外部化存儲,并支持在客戶端對配置進行刷新、加密、解密等操作。 |
Spring Cloud Bus | Spring Cloud 的事件和消息總線,主要用于在集群中傳播事件或狀態(tài)變化,以觸發(fā)后續(xù)的處理,例如動態(tài)刷新配置。 |
Spring Cloud Stream | Spring Cloud 的消息中間件組件,它集成了 Apache Kafka 和 RabbitMQ 等消息中間件,并通過定義綁定器作為中間層,完美地實現(xiàn)了應用程序與消息中間件之間的隔離。通過向應用程序暴露統(tǒng)一的 Channel 通道,使得應用程序不需要再考慮各種不同的消息中間件實現(xiàn),就能輕松地發(fā)送和接收消息。 |
Spring Cloud Sleuth | Spring Cloud?分布式鏈路跟蹤組件,能夠完美的整合 Twitter 的?Zipkin。 |
注:Netflix 是美國的一個在線視頻網(wǎng)站,它是公認的大規(guī)模生產(chǎn)級微服務的杰出實踐者,微服務界的翹楚。Netflix 的開源組件已經(jīng)在其大規(guī)模分布式微服務環(huán)境中經(jīng)過了多年的生產(chǎn)實戰(zhàn)驗證,成熟且可靠。
Spring Boot 和 Spring Cloud 的區(qū)別與聯(lián)系
Spring Boot 和 Spring Cloud 都是 Spring 大家族的一員,它們在微服務開發(fā)中都扮演著十分重要的角色,兩者之間既存在區(qū)別也存在聯(lián)系。
1. Spring Boot 和 Spring Cloud 分工不同
Spring Boot 是一個基于 Spring 的快速開發(fā)框架,它能夠幫助開發(fā)者迅速搭 Web 工程。在微服務開發(fā)中,Spring Boot 專注于快速、方便地開發(fā)單個微服務。
Spring Cloud 是微服務架構(gòu)下的一站式解決方案。Spring Cloud 專注于全局微服務的協(xié)調(diào)和治理工作。換句話說,Spring Cloud 相當于微服務的大管家,負責將 Spring Boot 開發(fā)的一個個微服務管理起來,并為它們提供配置管理、服務發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、決策競選以及分布式會話等服務。
2. Spring Cloud 是基于 Spring Boot 實現(xiàn)的
Spring Cloud 是基于 Spring Boot 實現(xiàn)的。與 Spring Boot 類似,Spring Cloud 也為提供了一系列 Starter,這些 Starter 是 Spring Cloud 使用 Spring Boot 思想對各個微服務框架進行再封裝的產(chǎn)物。它們屏蔽了這些微服務框架中復雜的配置和實現(xiàn)原理,使開發(fā)人員能夠快速、方便地使用 Spring Cloud 搭建一套分布式微服務系統(tǒng)。
3. Spring Boot 和 Spring Cloud 依賴項數(shù)量不同
Spring Boot 屬于一種輕量級的框架,構(gòu)建 Spring Boot 工程所需的依賴較少。
Spring Cloud 是一系列微服務框架技術的集合體,它的每個組件都需要一個獨立的依賴項(Starter POM),因此想要構(gòu)建一套完整的 Spring? Cloud 工程往往需要大量的依賴項。
4. Spring Cloud 不能脫離 Spring Boot 單獨運行
Spring Boot 不需要 Spring Cloud,就能直接創(chuàng)建可獨立運行的工程或模塊。
Spring Cloud 是基于 Spring Boot 實現(xiàn)的,它不能獨立創(chuàng)建工程或模塊,更不能脫離 Spring Boot 獨立運行。
注意:雖然 Spring Boot 能夠用于開發(fā)單個微服務,但它并不具備管理和協(xié)調(diào)微服務的能力,因此它只能算是一個微服務快速開發(fā)框架,而非微服務框架。
Spring Cloud 版本
Spring Cloud 包含了許多子項目(組件),這些子項目都是獨立進行內(nèi)容更新和迭代的,各自都維護著自己的發(fā)布版本號。
為了避免 Spring Cloud 的版本號與其子項目的版本號混淆,Spring Cloud 沒有采用常見的數(shù)字版本號,而是通過以下方式定義版本信息。
{version.name} .{version.number}
Spring Cloud 版本信息說明如下:
- ?version.name:版本名,采用英國倫敦地鐵站的站名來命名,并按照字母表的順序(即從 A 到 Z)來對應 Spring Cloud 的版本發(fā)布順序,例如第一個版本為 Angel,第二個版本為 Brixton(英國地名),然后依次是 Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton 等。
- version.number:版本號,每一個版本的 Spring Cloud 在更新內(nèi)容積累到一定的量級或有重大 BUG 修復時,就會發(fā)布一個“service releases”版本,簡稱 SRX 版本,其中 X 為一個遞增的數(shù)字,例如 Hoxton.SR8 就表示?Hoxton 的第 8 個 Release 版本。
Spring Cloud 版本選擇
在使用 Spring Boot + Spring Cloud 進行微服務開發(fā)時,我們需要根據(jù)項目中 Spring Boot 的版本來決定 Spring Cloud 版本,否則會出現(xiàn)許多意想不到的錯誤。
Spring Boot 與 Spring Cloud 的版本對應關系如下表(參考自Spring Cloud 官網(wǎng))。
Spring Cloud | Spring Boot |
---|---|
2020.0.x (Ilford) | 2.4.x, 2.5.x (從 Spring Cloud?2020.0.3 開始) |
Hoxton | 2.2.x, 2.3.x (從 Spring Cloud SR5 開始)? |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
注意:Spring Cloud 官方已經(jīng)停止對 Dalston、Edgware、Finchley 和 Greenwich 的版本更新。
除了上表中展示的版本對應關系之外,我們還可以使用瀏覽器訪問?https://start.spring.io/actuator/info,獲取 Spring Cloud 與 Spring Boot 的版本對應關系(JSON 版)。文章來源:http://www.zghlxwxcb.cn/news/detail-609866.html
{
……
"bom-ranges":{
……
"spring-cloud":{
"Hoxton.SR12":"Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.4":"Spring Boot >=2.4.0.M1 and <2.5.6-SNAPSHOT",
"2020.0.5-SNAPSHOT":"Spring Boot >=2.5.6-SNAPSHOT and <2.6.0-M1",
"2021.0.0-M1":"Spring Boot >=2.6.0.M1 and <2.6.0-SNAPSHOT",
"2021.0.0-SNAPSHOT":"Spring Boot >=2.6.0-SNAPSHOT"
},
……
},
……
}
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系統(tǒng)詳解springcloud微服務技術棧課程文章來源地址http://www.zghlxwxcb.cn/news/detail-609866.html
到了這里,關于微服務SpringCloud教程——Spring Cloud是什么的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!