SpringCloud學習筆記

SpringCloud是一個基於SpringBoot的微服務框架,它爲開發人員提供了快速構建分佈式系統中經常使用的模塊。前端

架構圖

在微服務架構中,須要幾個基礎的服務治理組件,包括服務註冊與發現、服務消費、負載均衡、熔斷器、智能路由、配置管理等,由這幾個基礎組件相互協做,共同組建了一個簡單的微服務系統。一個簡單的微服務系統以下圖:git

服務列表

spring-cloud-dependencies -->統一依賴管理github

spring-cloud-eureka   -->服務註冊與發現spring

spring-cloud-config    -->服務配置中心api

spring-cloud-provider        -->服務提供者restful

spring-cloud-client-ribbon  -->服務消費者架構

spring-cloud-client-feign    -->服務消費者併發

spring-cloud-zipkin     -->服務鏈路追蹤負載均衡

spring-cloud-zuul        -->服務網關框架

spring-cloud-admin     -->服務監控

大合照

下面,我來解釋一下這些服務哈...

1.服務註冊與發現

Eureka,是 Spring Cloud Netflix 一個高可用的組件,向Eureka註冊的實例須要向註冊中心發送心跳(沒有心跳連不上就當你掛了)。所以須要Erureka Server充當註冊中心,而後將不少個Erureka Client註冊到Erureka Server中。

① 在pom文件配置


② 在SpringBoot啓動類中需註解@EnableEurekaServer


③ 代表本身是一個 Eureka Server


④ 啓動Eureka以後,訪問Eureka Server的端口,能夠看到我已註冊了好多Eureka Client

ps:後續能夠學習zookeeper,分佈式協調技術,也是服務註冊與發現模塊。

 

2. 服務配置中心

在分佈式系統中,因爲服務數量巨多,爲了方便服務配置文件統一管理,實時更新,因此須要分佈式配置中心組件。Spring Cloud 有分佈式配置中心組件 Spring Cloud Config,它支持配置服務放在遠程 Git 倉庫中。

① 在pom文件配置


② 在SpringBoot啓動類中需註解@EnableConfigServer

③ 配置Git倉庫


④ 啓動服務配置中心,各個Config Client只須要在本身的yml中指定Config Server,就能夠訪問雲配置中屬於本身yml文件

ps:後續能夠學習Apollo,也是開源配置管理中心。

 

3. 服務提供者

① 在pom文件配置


② 在SpringBoot啓動類中需註解@EnableEurekaClient服務提供者和服務消費者都須要此註解,代表都是Eureka的客戶端,都是弟弟。

③ 在yml文件中:要有本身的名字(服務惟一標誌),本身的端口,以及要指向的Eureka Server(服務消費者相似,如下不在贅述)

④ 啓動服務提供者,可使用此服務

4. 服務消費者(Ribbon)

服務與服務的通信是基於 http restful 的。Spring cloud 有兩種服務調用方式,這一種是 Ribbon + RestTemplate。

① 在pom文件配置


② 須要本身定義restTemplate,而後放在Spring的IoC容器中,而且添加@LoadBalanced註解以後可實現負載均衡的效果

③ 服務提供者和服務消費者都已經註冊到Eureka Server中,服務消費者能夠只根據服務的名字,就能夠找到對應的服務提供者,服務消費者不用管服務提供者的ip和port,這些已交給服務註冊中心了。


④ 啓動服務消費者(Ribbon),可使用此服務(port=8764)來調用服務提供者的服務(port=8763),所以實現了服務與服務的調用

5. 服務消費者(Feign)

Spring cloud 有兩種服務調用方式,而這一種是 Feign,它集成了Ribbon,默認擁有負載均衡的效果。使用 Feign,只須要建立一個接口並註解。在實現熔斷器時,只須要實現服務的接口。

① 在pom文件配置


② 在啓動類中使用這兩個註解


③ 接口:根據服務名字調用服務提供者,以及有熔斷處理

④ 實現此接口的的實現類,擁有熔斷處理方法


⑤ 配置熔斷器儀表盤


⑥ 用儀表盤能夠監控熔斷狀況

 

6. 服務網關

Zuul,主要功能是路由轉發和過濾器。路由功能是微服務的一部分,根據api轉發到相應的服務。Zuul 默認和 Ribbon 結合實現了負載均衡的功能。

① 在pom文件配置


② 在啓動類中使用這個註解


③ 在yml中配置路由


④ 實現過濾器(eg:這裏根據是否攜帶token參數進行過濾)

⑤ api網關演示

7. 服務鏈路追蹤

ZipKin,是一個開放源代碼的分佈式跟蹤系統,用於收集服務的定時數據,以解決微服務架構中的延遲問題,包括數據的收集、存儲、查找和展示。每一個服務向  ZipKin 報告計時數據,ZipKin 會根據調用關係經過 ZipKin UI  生成依賴關係圖,顯示了多少跟蹤請求經過每一個服務,該系統讓開發者可經過一個 Web  前端輕鬆的收集和分析數據,例如用戶每次請求服務的處理時間等,可方便的監測系統中存在的瓶頸。(幾乎要在全部的pom文件添加ZipKin的依賴)

① 在pom文件配置


② 在啓動類中使用這個註解


③ 啓動鏈路追蹤服務ZipKin

 

8. 服務監控

Spring Boot Admin 是一套功能強大的監控管理系統。用於各個微服務系統的健康狀態、會話數量、併發數、服務資源、延遲等度量信息的收集。(幾乎要在全部的pom文件添加Admin  Client的依賴)

① 在Admin Server中pom文件配置

② 在啓動類中使用這個註解

③ 啓動服務監控


好了,小編今天已經肝到凌晨3點半了,先記錄到這啦哈哈。

-END-

 

後續

我的博客地址:https://www.cnblogs.com/q964024886/

GitHub地址:https://github.com/wenhaixiong

相關文章
相關標籤/搜索