天天看點

Spring Cloud基本介紹

✨ Spring Cloud基本介紹

  • ​​1.微服務中的相關概念​​
  • ​​1.1服務的注冊與實作​​
  • ​​1.2負載均衡​​
  • ​​1.3熔斷​​
  • ​​1.4鍊路追蹤​​
  • ​​1.5API網關​​
  • ​​2.Spring Cloud的介紹​​
  • ​​2.1基本認識​​
  • ​​2.2Spring Cloud的架構​​
  • ​​2.2.1Spring Cloud的核心元件​​
  • ​​2.2.2Spring Cloud體系結構​​
  • ​​2.3Spring Boot和Spring Cloud的差別與聯系​​
  • ​​2.3.1 Spring Boot和Spring Cloud的分工不同​​
  • ​​2.3.2 Spring Cloud是基于Spring Boot實作的​​
  • ​​2.3.3Spring Cloud和Spring Boor依賴項數量不同​​
  • ​​2.3.4Spring Cloud不能脫離Spring Boot單獨運作​​
  • ​​2.4 關于SpringBoot和SpringCloud版本​​
  • ​​2.4.1. SpringCloud版本選擇​​
  • ​​2.4.2. Springboot版本選擇​​
  • ​​2.4.3. 官網看Boot版本​​
  • ​​2.4.4. SpringCloud版本選擇​​
  • ​​2.4.5. SpringCloud和Springboot之間的依賴關系​​

📃個人首頁:​​不斷前進的皮卡丘​​​

🌞部落格描述:夢想也許遙不可及,但重要的是追夢的過程,用部落格記錄自己的成長,記錄自己一步一步向上攀登的印記

🔥個人專欄:​​微服務專欄​​​

1.微服務中的相關概念

1.1服務的注冊與實作

服務注冊:服務執行個體将自身服務資訊注冊到注冊中心。這部分服務資訊包括服務所在主機IP和提供服務

的Port,以及暴露服務自身狀态以及通路協定等資訊。

服務發現:服務執行個體請求注冊中心擷取所依賴服務資訊。服務執行個體通過注冊中心,擷取到注冊到其中的

服務執行個體的資訊,通過這些資訊去請求它們提供的服務。

Spring Cloud基本介紹

1.2負載均衡

負載均衡是高可用網絡基礎架構的關鍵元件,通常用于将工作負載分布到多個伺服器來提高網站、應用、資料庫或其他服務的性能和可靠性

Spring Cloud基本介紹

1.3熔斷

熔斷這一概念來源于電子工程中的斷路器(Circuit Breaker)。在網際網路系統中,當下遊服務因通路壓力過大而響應變慢或失敗,上遊服務為了保護系統整體的可用性,可以暫時切斷對下遊服務的調用。這種犧牲局部,保全整體的措施就叫做熔斷。

Spring Cloud基本介紹

1.4鍊路追蹤

随着微服務架構的流行,服務按照不同的次元進行拆分,一次請求往往需要涉及到多個服務。網際網路應用建構在不同的軟體子產品集上,這些軟體子產品,有可能是由不同的團隊開發、可能使用不同的程式設計語言來實作、有可能布在了幾千台伺服器,橫跨多個不同的資料中心。是以,就需要對一次請求涉及的多個服務鍊路進行日志記錄,性能監控即鍊路追蹤

Spring Cloud基本介紹

1.5API網關

随着微服務的不斷增多,不同的微服務一般會有不同的網絡位址,而外部用戶端可能需要調用多個服務的接口才能完成一個業務需求,如果讓用戶端直接與各個微服務通信可能出現:

  • 用戶端需要調用不同的url位址,增加難度
  • 在一定的場景下,存在跨域請求的問題
  • 每個微服務都需要進行單獨的身份認證

針對這些問題,API網關順勢而生。

API網關直面意思是将所有API調用統一接入到API網關層,由網關層統一接入和輸出。一個網關的基本功能有:統一接入、安全防護、協定适配、流量管控、長短連結支援、容錯能力。有了網關之後,各個 API服務提供團隊可以專注于自己的的業務邏輯處理,而API網關更專注于安全、流量、路由等問題。

Spring Cloud基本介紹

2.Spring Cloud的介紹

2.1基本認識

Spring Cloud是一系列架構的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、資料監控等,都可以用 Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud并沒有重複制造輪子,它隻是将目前各家

公司開發的比較成熟、經得起實際考驗的服務架構組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實作原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。

2.2Spring Cloud的架構

2.2.1Spring Cloud的核心元件

Spring Cloud的本質是在 Spring Boot 的基礎上,增加了一堆微服務相關的規範,并對應用上下文 (Application Context)進行了功能增強。既然 Spring Cloud 是規範,那麼就需要去實作,目前Spring Cloud 規範已有 Spring官方,Spring Cloud Netflflix,Spring Cloud Alibaba等實作。通過元件化的方式,Spring Cloud将這些實作整合到一起構成全家桶式的微服務技術棧。

Spring Cloud Netflflix元件

Spring Cloud基本介紹

Spring Cloud Alibaba元件

Spring Cloud基本介紹

Spring Cloud原生及其他元件

Spring Cloud基本介紹

2.2.2Spring Cloud體系結構

Spring Cloud基本介紹

從上圖可以看出Spring Cloud各個元件互相配合,合作支援了一套完整的微服務架構。

注冊中心負責服務的注冊與發現,很好将各服務連接配接起來

斷路器負責監控服務之間的調用情況,連續多次失敗進行熔斷保護。

API網關負責轉發所有對外的請求和服務

配置中心提供了統一的配置資訊管理服務,可以實時的通知各個服務擷取最新的配置資訊鍊路追蹤技術可以将所有的請求資料記錄下來,友善我們進行後續分析

各個元件又提供了功能完善的dashboard監控平台,可以友善的監控各元件的運作狀況

2.3Spring Boot和Spring Cloud的差別與聯系

2.3.1 Spring Boot和Spring Cloud的分工不同

  • Spring Boot是一個基于Spring的快速開發架構,它可以幫助開發者快速搭建web工程。在微服務開發中,Spring Boot專注于快速、友善地開發單個微服務。
  • Spring Cloud是微服務架構下的一站式解決方案。Spring Cloud專注于全局微服務的協調和治理工作。Spring Cloud相當于微服務的大管家,負責把Spring Boot開發的一個個微服務管理起來,并且為他們提供配置管理、服務實作、斷路器、路由、微代理、事件總線、決策競選以及分布式會話等服務。

2.3.2 Spring Cloud是基于Spring Boot實作的

Spring Cloud是基于Spring Boot實作的,它和Spring Boot類似,Spring Cloud也提供了一系列Starter,這些Starter是Spring Cloud使用Spring Boot死信對各個微服務架構進行再封裝的産物,它們屏蔽了這些微服務架構中複雜的配置和實作原理,讓開發者可以快速、友善地使用Spring Cloud搭建一套分布式微服務系統。

2.3.3Spring Cloud和Spring Boor依賴項數量不同

  • Spring Boot是一種輕量級的架構,建構Spring Boot工程需要的依賴比較少
  • Spring Cloud是一系列微服務架構技術的集合體,它的每一個元件都需要一個獨立的依賴性(Starter POM),是以,如果想要建構一套完整的Spring Cloud工程,一般都需要大量的依賴項。

2.3.4Spring Cloud不能脫離Spring Boot單獨運作

  • Spring Boot不需要Spring Cloud,就可以直接建立可以獨立運作的工程或子產品
  • Spring Boot雖然可以用來開發單個微服務,但是它沒用管理和協調微服務的能力,是以它隻能算是一個微服務快速開發架構,而不是微服務架構。

2.4 關于SpringBoot和SpringCloud版本

2.4.1. SpringCloud版本選擇

SpringBoot2.X版和SpringCloud H版

SpringCloud Alibaba 2.1

2.4.2. Springboot版本選擇

git源碼位址:

​​https://github.com/spring-projects/spring-boot/releases/​​SpringBoot2.0新特性:

​​https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes​​

通過上面官網發現,Boot官方強烈建議你更新到2.X以上版本

Spring Cloud基本介紹

2.4.3. 官網看Boot版本

springboot(截至2020.4.4)

Spring Cloud基本介紹

2.4.4. SpringCloud版本選擇

  • git源碼位址: ​​https://github.com/spring-projects/spring-cloud/wiki​​
  • 官網:​​https://spring.io/projects/spring-cloud​​
  • 官網看Cloud版本
  • Cloud命名規則

Spring Cloud采用了英國倫敦地鐵站的名稱來命名,并由地鐵站名稱字母A-Z依次類推的形式來釋出疊代版本。

Spring Cloud 是一個由許多子項目組成的綜合項目,各子項目有不同的釋出節奏。為了管理SpringCloud與各子項目的版本依賴關系,釋出了一個清單,其中包括了某個SpringCloud版本對應的子項目版本。為了避免SpringCloud版本号與子項目版本号混淆,SpringCloud版本采用了名稱而非版本号的命名,這些版本的名字采用了倫敦地鐵站的名字,根據字母表的順序來應對版本時間順序。例如Angel是第一個版本,Brixton是第二個版本。當SpringCloud的釋出内容積累到臨界點或者一個重大BUG被解決後,會釋出一個"service releases"版本,簡稱SRX版本,比如Greenwich.SR2就是SpringCloud釋出的Greenwich版本的第二個SRX版本。

  • SpringCloud(截至2020.4.4)

2.4.5. SpringCloud和Springboot之間的依賴關系

​​https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/​​

Spring Cloud基本介紹

最新版本對應關系:截止2020年4月初

​​https://cloud.spring.io/spring-cloud-static/Hoxton.SR3/reference/html/spring-cloud.html​​

Spring Cloud基本介紹

繼續閱讀