Spring Cloud是什麼? Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、消息匯流排、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring並 ...
Spring Cloud是什麼?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、消息匯流排、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring並沒有重覆製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。
Spring Cloud 與 微服務
微服務的概念起源於: http://www.cnblogs.com/liuning8023/p/4493156.html(英文: https://martinfowler.com/articles/microservices.html)
微服務架構模式的目的是將大型的,複雜的,長期運行的應用程式構建為一組相互配合的服務,每個服務都可以很容易進行局部改良.微服務的意思是每個服務應該足夠小,小是指業務邏輯上的小.微服務的形象表示:
- X軸: 水平擴展, 即在負載均衡伺服器後增加多個運行實例
- Z軸: 資料庫的擴展, 即分庫分表
- Y軸: 功能分解, 即將不同職能的模塊劃分成不同的服務
Spring Cloud技術概覽
主要是下麵內容:
- 服務治理
- 分散式鏈路監控
- 消息組件
- 配置中心
- 安全控制
- 命令行工具
- 集群工具
每個模塊又是由不同組件結合來解決,其實學習Spring Cloud就是學會Spring Boot整合這些組件,學會使用,深入理解就好.
Eureka
Eureka是Netflix開源的一款提供服務註冊和發現的產品,提供了完整的Service Registry 和 Service Discovery實現, 是Spring Cloud體系中最重要最核心的組件之一. Eureka相當於圖書館管理員,添加書需要到我這說一下,取書也得到我這報備.所以說Eureka在生產環境中一般是集群,至少兩個,否則Eureka一旦掛掉將會影響整個服務.
Eureka就自動具有註冊中心,負載均衡,故障轉移的功能.
Hystrix
熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方節點,從而對延遲和故障提供更強大的容錯能力.也就是微服務中多個服務層調用,基礎服務的故障可能會導致級聯故障,造成整個系統不可用,就是服務血崩效應,Hystrix就是在這種場景下來做故障隔離,Hystrix 會在某個服務連續調用 N 次不響應的情況下,立即通知調用端調用失敗,避免調用端持續等待而影響了整體服務。Hystrix 間隔時間會再次檢查此服務,如果服務恢復將繼續提供服務。
服務雪崩效應是一種因"服務提供者"不可用導致"服務消費者"的不可用,並且將不可用逐漸放大的過程.
zuul
zuul路由也是微服務架構不可或缺的一部分,提供動態路由,監控,彈性,安全等的邊緣服務.具體作用就是服務轉發,接受並轉發所有內外部的客戶端調用,使用 Zuul 可以作為資源的統一訪問入口. zuul相當於門衛,對請求進行一些校驗等.
Spring Cloud Config
配置中心,把配置文件放在遠程伺服器,集中化管理集群配置,支持本地存儲,git以及svn.
這個組件是解決分散式系統的配置管理方案,包含了client和server兩個部分,Server 提供配置文件的存儲、以介面的形式將配置文件的內容提供出去,Client 通過介面獲取數據、並依據此數據初始化自己的應用。
當所有配置存儲在配置中心時,配置中心也成為一個很重要的組件,所以一般也建議做集群,支持配置中心高可用.
Spring Cloud Bus
事件,消息匯流排,用於在集群中傳播狀態變化,可與Spring Cloud Config聯合支持熱部署,也就是改變配置文件提交到版本庫時,會自動觸發對應實例的Refresh.
Spring Cloud Sleuth
日誌收集工具包,封裝了Dapper和log-based追蹤以及Zipkin和HTrace操作,為SpringCloud應用實現了一種分散式追蹤解決方案。
還有更多的組件,使用的時候再說.
組件的配套使用
- Eureka負責服務的註冊和發現,很好將各個服務連接起來
- Hystrix負責監控服務之間的調用情況,連續多次失敗進行熔斷保護
- Hystrix dashboard,Turvine負責監控Hystrix的熔斷情況,給予圖形化展示(可以理解為圖形化工具)
- Spring Cloud Config提供統一的配置中心服務
- 配置文件發生改變時,Spring Cloud Bus負責通知各個服務去獲取最新的配置信息(實現熱部署)
- 所有對外的請求和服務都通過zuul進行轉到,起到API網關的作用
- sleuth + Zipkin將所有請求數據記錄下來,方便進行後續分析.
參考:純潔的微笑(http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html) 和 Wind MT(https://windmt.com/2018/04/14/spring-cloud-0-microservices/)