1. 初始認識 Spring Cloud
@
- 1. 初始認識 Spring Cloud
- 前言
- 2. Spring Cloud 基本介紹
- 3. 系統架構的演變過程
- 3.1 單機架構
- 3.2 動靜分離架構:靜態快取 + 檔案儲存
- 3.3 分散式架構:業務拆分 + 負載均衡
- 3.4 微服務架構:使用 Spring Cloud
- 4. Spring Cloud 全面說明
- 4.1 Spring Cloud 和 Spring Boot 版本對應關係
- 4.2 Spring Cloud 元件選型
- 5. Spring Cloud Alibaba 基本介紹
- 6. 分散式微服務技術選型
- 6.1 Spring Cloud 原生元件的幾大缺點
- 6.2 Spring Cloud Alibaba 的優勢
- 6.3 分散式微服務技術選型建議
- 8. 最後:
前言
- 對應上一篇學習內容:🌟🌟🌟
- 對應下一篇學習內容:🌟🌟🌟
2. Spring Cloud 基本介紹
Spring Cloud 官方文件地址:https://spring.io/projects/spring-cloud
在學習 Spring Cloud 微服務技術之前,我們可以先來思考一個問題:
如果沒有微服務技術,是不是程式設計師就不能開發大型專案了?
答案是:可以的。我們可以對於大型專案進行模組化劃分,對各個模組進行實現,模組之間更多的是透過
API
呼叫完成,耦合度較高 ,不利於擴充套件和維護,其實,在以前是沒有微服務技術的時候,很多大型專案就已經使用了微服務的概念,只是當時不叫微服務 。但用的就是微服務的思想。隨著時代的發展,微服務越來越重要,就被我們的 Spring 公司進行了一個開源的整合,定義的行業的規範,叫做為了現在的微服務技術 。**目前典型的微服務技術是:“Spring Cloud”和“Spring Cloud alibaba” ** 。
標準的微服務解決方案:“Spring Cloud”和“Spring Cloud alibaba” 出現的原因和帶來的價值:
- 微服務可以根據業務不同,將一個大專案,分解成**不同的服務(微服務:比如:{搜尋服務,閘道器服務,配置服務,儲存服務,發現服務等})
- 各個伺服器透過分散式方式進行工作,從而可以高效,快速,穩定的 完成複雜的功能。
- 換句話說:就是將原來的大專案的某些模組,抽出形成微服務,配合分散式工作方式 ,從而高效,快速,穩定的完成複雜業務。
下面我們以搜狐的網站,構建繪製一個簡單的理解的示意圖:
根據上述示圖情況;Spring 社群,大旗一揮,整合優質元件:
特別說明:Spring 整合的優質元件主要分為三大類:NetFlix,Alibaba,自己Spring社群開發的 。
- 在高併發時,解決服務熔斷降級 問題,保證系統的高可用性 。
- 在伺服器叢集時,要解決負載均衡問題
- 在複雜的網路情況下,要保證資料儲存的穩定性和一致性。
- 提供閘道器服務。
- 等等其它技術問題
3. 系統架構的演變過程
3.1 單機架構
簡單是說:就是少量使用者,單個伺服器配置。
3.2 動靜分離架構:靜態快取 + 檔案儲存
3.3 分散式架構:業務拆分 + 負載均衡
3.4 微服務架構:使用 Spring Cloud
4. Spring Cloud 全面說明
"微服務" 一詞源於 Martin Fowler 的名為 Microservices 的博文,簡單地說,微服務是系統架構上的一種設計風格,它的主旨是將一個 原本獨立的系統拆分成多個小型服務
,這些服小型服務都在各自獨立的程序中執行,服務之間透過基於HTTP 的 RESTful API
進行通訊協作。
被拆分成的每一個小型服務都圍繞著系統中的某一項或一些耦合度較高的業務功能進行構建,並且每個服務維護著自身的資料儲存,業務開發,自動化測試案例以及獨立部署機制。由於有輕量級的通訊協作基礎,所以這些微服務可以使用不同的語言來編寫,但是這裡我們進行學習的是使用Java語言 。
Spring Cloud 全面說明:
- Spring Cloud 來源於 Spring ,是更高層次的,架構視角的綜合性大型專案,目標宗旨在 “在構建一套標準化的微服務解決方案,讓架構師在使用微服務理念構建系統時,面對各個環節的問題都可以找到相應的元件來處理” 。
- Spring Cloud 是 Spring 社群為為微服務架構提供的一個 “全家桶” 套餐。套餐中各個元件之間的配合,可以減少在元件的選型和整合上花費的精力,可以快速構建起基礎的微服務架構系統,是微服務架構的最佳落地方案。
- Spring Cloud 天然支援 Spring Bood(各自之間都存在對應的要求的版本),使用門檻較低
- 解決與分散式系統相關的複雜性:網路問題,延遲開銷,貸款問題,安全問題。
- 處理服務發現的能力:服務發現允許叢集中的程序和服務找到彼此並進行通訊
- 解決冗餘問題:冗餘問題經常發生在分散式系統中
- 解決負載平衡:改進跨多個計算資源:例如:計算機資源,網路連線,中央處理單元的工作負載分佈。
Spring Cloud 核心元件圖: 官網文件地址:https://spring.io/projects/spring-cloud
Spring Cloud Alibaba 文件地址: https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud Alibaba 中文版文件地址: https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/README-zh.md
Spring Cloud Netflix 官網地址: https://github.com/Netflix
Spring Cloud 核心元件:
Spring Cloud 分散式示意圖:
Spring Cloud 分散式示意圖:官網地址:https://spring.io/microservices
Spring Cloud 是微服務的落地
Spring Cloud 體現了微服務的彈性設計
微服務的工作方式一般式基於分散式的
Spring Cloud 仍然是 Spring 家族一員,可以解決微服務的分散式工作方式帶來的各種問題
Spring Cloud 提供很多元件,比如:服務發現,負載均衡,鏈路中斷,分散式追蹤和監控,甚至提供 API gateway 功能。
4.1 Spring Cloud 和 Spring Boot 版本對應關係
關於 Spring Cloud 和 Spring Boot 版本對應關係的,官方地址如下:https://spring.io/projects/spring-cloud
4.2 Spring Cloud 元件選型
特別說明:對應打上了 ✔️ 的表示,推薦使用的元件,而對應打上 ❌ 的,則是表名不建議使用該元件。換一種。
5. Spring Cloud Alibaba 基本介紹
Spring Cloud Alibaba 的官方文件:https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud Alibaba 的官方中文文件:https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/README-zh.md
Spring Cloud Alibaba 主要的功能如下:
- 服務限流降級:預設支援 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降級功能的接入,可以在執行時透過控制檯實時修改限流降級規則,還支援檢視限流降級 Metrics 監控。
- 服務註冊與發現:適配 Spring Cloud 服務註冊與發現標準,預設整合對應 Spring Cloud 版本所支援的負載均衡元件的適配。
- 分散式配置管理:支援分散式系統中的外部化配置,配置更改時自動重新整理。
- 訊息驅動能力:基於 Spring Cloud Stream 為微服務應用構建訊息驅動能力。
- 分散式事務:使用 @GlobalTransactional 註解, 高效並且對業務零侵入地解決分散式事務問題。
- 阿里雲物件儲存:阿里雲提供的海量、安全、低成本、高可靠的雲端儲存服務。支援在任何應用、任何時間、任何地點儲存和訪問任意型別的資料。
- 分散式任務排程:提供秒級、精準、高可靠、高可用的定時(基於 Cron 表示式)任務排程服務。同時提供分散式的任務執行模型,如網格任務。網格任務支援海量子任務均勻分配到所有 Worker(schedulerx-client)上執行。
- 阿里雲簡訊服務:覆蓋全球的簡訊服務,友好、高效、智慧的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道。
6. 分散式微服務技術選型
6.1 Spring Cloud 原生元件的幾大缺點
- Spring Cloud 部分元件停止維護和更新,給開發帶來不便。
- Spring Cloud 部分環境搭建複雜,沒有完善的視覺化介面,我們需要大量的二次開發和定製。
- Spring Cloud 配置複雜,難以上手
6.2 Spring Cloud Alibaba 的優勢
- 阿里使用過的元件經歷了考驗高併發,高效能,高可用 ,效能強悍,設計合理,現在開源出來供大家使用。
- 搭配完善的視覺化介面,給開發運維帶來極大的便利搭建簡單,學習曲線低。
6.3 分散式微服務技術選型建議
- Spring Cloud Alibaba 元件為主
- Spring Cloud 為輔,比如:
- SpringCloud-Ribbon:負載均衡
- SpringCloud-OpenFeign:呼叫遠端服務
- SpringCloud-GateWay:API閘道器
- SpringCloud-Sleuth:呼叫鏈監控等
8. 最後:
“在這個最後的篇章中,我要表達我對每一位讀者的感激之情。你們的關注和回覆是我創作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續在其他的領域奮鬥。感謝你們,我們總會在某個時刻再次相遇。”