Spring Cloud是基於Spring Boot的一整套實現微服務的框架。他提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等組件。最重要的是,跟spring boot框架一起使用的話,會讓你開發微服務架構的雲服務非常好的方便。
Spring Cloud包含了非常多的子框架,其中,Spring Cloud Netflix是其中一套框架,由Netflix開發後來又併入Spring Cloud大家庭,它主要提供的模塊包括:服務發現、斷路器和監控、智能路由、客戶端負載均衡等。
以下爲Spring Cloud的核心功能:
Spring Cloud Netflix框架剛好就滿足了上面的核心功能,而且最重要的是,使用起來非常的簡單。Spring Cloud Netflix包含的組件及其主要功能大致如下:
Eureka,服務註冊和發現,它提供了一個服務註冊中心、服務發現的客戶端,還有一個方便的查看所有註冊的服務的界面。 所有的服務使用Eureka的服務發現客戶端來將自己註冊到Eureka的服務器上。
Zuul,網關,所有的客戶端請求通過這個網關訪問後臺的服務。他可以使用一定的路由配置來判斷某一個URL由哪個服務來處理。並從Eureka獲取註冊的服務來轉發請求。
Ribbon,即負載均衡,Zuul網關將一個請求發送給某一個服務的應用的時候,如果一個服務啓動了多個實例,就會通過Ribbon來通過一定的負載均衡策略來發送給某一個服務實例。
Feign,服務客戶端,服務之間如果需要相互訪問,可以使用RestTemplate,也可以使用Feign客戶端訪問。它默認會使用Ribbon來實現負載均衡。
Hystrix,監控和斷路器。我們只需要在服務接口上添加Hystrix標籤,就可以實現對這個接口的監控和斷路器功能。
Hystrix Dashboard,監控面板,他提供了一個界面,可以監控各個服務上的服務調用所消耗的時間等。
Turbine,監控聚合,使用Hystrix監控,我們需要打開每一個服務實例的監控信息來查看。而Turbine可以幫助我們把所有的服務實例的監控信息聚合到一個地方統一查看。這樣就不需要挨個打開一個個的頁面一個個查看。
下面就是使用上述的子框架實現的爲服務架構的組架構圖:
通過這張圖,我們來了解一下各組件配置使用運行流程:
微服務是一種架構的理念,提出了微服務的設計原則,從理論爲具體的技術落地提供了指導思想。Spring Boot是一套快速配置腳手架,可以基於Spring Boot快速開發單個微服務;Spring Cloud是一個基於Spring Boot實現的服務治理工具包;Spring Boot專注於快速、方便集成的單個微服務個體,Spring Cloud關注全局的服務治理框架。