1. 程式人生 > >Spring Cloud 初認識

Spring Cloud 初認識

依據 分布式服務 顯示 關系 man 單個 strong 消息 追蹤

Spring Cloud是一個繼承了眾多開源的框架,其利用了Springboot開發的便利性來實現分布式服務功能,是一套開放、易部署、易維護的分布式開發工具包,而且有成熟的社區且社區活躍度很高。Spring Cloud從設計之初就考慮了絕大多數互聯網公司架構演化所需的功能,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等。

Spring Cloud相關組件:

Eureak
Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是Spring Cloud體系中最重要最核心的組件之一。

用大白話講,Eureka就是一個服務中心,將所有的可以提供的服務都註冊到它這裏來管理,其它各調用者需要的時候去註冊中心獲取,然後再進行調用,避免了服務之間的直接調用,方便後續的水平擴展、故障轉移等。

作為服務中心這麽重要的組件一但掛掉將會影響全部服務,因此需要搭建Eureka集群來保持高可用性,生產中建議最少兩臺。
隨著系統的流量不斷增加,需要根據情況來擴展某個服務,Eureka內部已經提供均衡負載的功能,只需要增加相應的服務端實例既可。
那麽在系統的運行期間某個實例掛了怎麽辦?Eureka內容有一個心跳檢測機制,如果某個實例在規定的時間內沒有進行通訊則會自動被剔除掉,避免了某個實例掛掉而影響服務。

因此使用了Eureka就自動具有了註冊中心、負載均衡、故障轉移的功能。

Hystrix

Hystrix會在某個服務連續調用N次不響應的情況下,立即通知調用端調用失敗,避免調用端持續等待而影響了整體服務。Hystrix間隔時間會再次檢查此服務,如果服務恢復將繼續提供服務。
Hystrix Dashboard和Turbine
當熔斷發生的時候需要迅速的響應來解決問題,避免故障進一步擴散,那麽對熔斷的監控就變得非常重要。
熔斷的監控現在有兩款工具:Hystrix-dashboard和Turbine
Hystrix-dashboard是一款針對Hystrix進行實時監控的工具,通過Hystrix Dashboard我們可以直觀地看到各Hystrix Command的請求響應時間, 請求成功率等數據。

但是只使用Hystrix Dashboard的話, 你只能看到單個應用內的服務信息, 這明顯不夠。
我們需要一個工具能讓我們匯總系統內多個服務的數據並顯示到Hystrix Dashboard上, 這個工具就是Turbine

Spring Cloud Config

Spring Cloud Config是一個解決分布式系統的配置管理方案。它包含了Client和Server兩個部分,Server提供配置文件的存儲、以接口的形式將配置文件的內容提供出去,Client通過接口獲取數據、並依據此數據初始化自己的應用。
其實就是Server端將所有的配置文件服務化,需要配置文件的服務實例去Config Server獲取對應的數據。將所有的配置文件統一整理,避免了配置文件碎片化。

如果服務運行期間改變配置文件,服務是不會得到最新的配置信息,需要解決這個問題就需要引入Refresh。它可以在服務的運行期間重新加載配置文件。
當所有的配置文件都存儲在配置中心的時候,配置中心就成為了一個非常重要的組件。

如果配置中心出現問題將會導致災難性的後果,因此在生產中建議對配置中心做集群,來支持配置中心高可用性。

Spring Cloud Bus

Spring Cloud Bus 通過輕量消息代理連接各個分布的節點。這會用在廣播狀態的變化(例如配置變化)或者其它的消息指令中。
Spring Cloud Bus 的一個核心思想是通過分布式的啟動器對 Spring Boot 應用進行擴展,也可以用來建立一個或多個應用之間的通信頻道。目前唯一實現的方式是用 AMQP 消息代理作為通道。
Spring Cloud Bus 是輕量級的通訊組件,也可以用在其它類似的場景中。

Spring Cloud Zuul

Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器。

Spring Cloud Zuul路由是微服務架構中不可或缺的一部分,提供動態路由,監控,彈性,安全等的邊緣服務。
它的具體作用就是服務轉發,接收並轉發所有內外部的客戶端調用。使用Zuul可以作為資源的統一訪問入口,同時也可以在網關做一些權限校驗等類似的功能。

Spring Cloud Sleuth

Spring Cloud Sleuth為服務之間調用提供鏈路追蹤。通過Sleuth可以很清楚的了解到一個服務請求經過了哪些服務,每個服務處理花費了多長時間。從而讓我們可以很方便的理清各微服務間的調用關系。

Spring Cloud各組件配合工作:

Eureka負責服務的註冊與發現,很好將各服務連接起來
Hystrix 負責監控服務之間的調用情況,連續多次失敗進行熔斷保護。
Hystrix dashboard,Turbine 負責監控 Hystrix的熔斷情況,並給予圖形化的展示
Spring Cloud Config 提供了統一的配置中心服務
當配置文件發生變化的時候,Spring Cloud Bus 負責通知各服務去獲取最新的配置信息
所有對外的請求和服務,我們都通過Zuul來進行轉發,起到API網關的作用
最後我們使用Sleuth+Zipkin將所有的請求數據記錄下來,方便我們進行後續分析

Spring Cloud 初認識