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 -->服務監控
下面,我來解釋一下這些服務哈...
Eureka,是 Spring Cloud Netflix 一個高可用的組件,向Eureka註冊的實例須要向註冊中心發送心跳(沒有心跳連不上就當你掛了)。所以須要Erureka Server充當註冊中心,而後將不少個Erureka Client註冊到Erureka Server中。
① 在pom文件配置
② 在SpringBoot啓動類中需註解@EnableEurekaServer
③ 代表本身是一個 Eureka Server
ps:後續能夠學習zookeeper,分佈式協調技術,也是服務註冊與發現模塊。
在分佈式系統中,因爲服務數量巨多,爲了方便服務配置文件統一管理,實時更新,因此須要分佈式配置中心組件。Spring Cloud 有分佈式配置中心組件 Spring Cloud Config,它支持配置服務放在遠程 Git 倉庫中。
① 在pom文件配置
② 在SpringBoot啓動類中需註解@EnableConfigServer
③ 配置Git倉庫
④ 啓動服務配置中心,各個Config Client只須要在本身的yml中指定Config Server,就能夠訪問雲配置中屬於本身yml文件
ps:後續能夠學習Apollo,也是開源配置管理中心。
① 在pom文件配置
② 在SpringBoot啓動類中需註解@EnableEurekaClient。服務提供者和服務消費者都須要此註解,代表都是Eureka的客戶端,都是弟弟。
③ 在yml文件中:要有本身的名字(服務惟一標誌),本身的端口,以及要指向的Eureka Server(服務消費者相似,如下不在贅述)
④ 啓動服務提供者,可使用此服務
服務與服務的通信是基於 http restful 的。Spring cloud 有兩種服務調用方式,這一種是 Ribbon + RestTemplate。
① 在pom文件配置
② 須要本身定義restTemplate,而後放在Spring的IoC容器中,而且添加@LoadBalanced註解以後可實現負載均衡的效果
③ 服務提供者和服務消費者都已經註冊到Eureka Server中,服務消費者能夠只根據服務的名字,就能夠找到對應的服務提供者,服務消費者不用管服務提供者的ip和port,這些已交給服務註冊中心了。
④ 啓動服務消費者(Ribbon),可使用此服務(port=8764)來調用服務提供者的服務(port=8763),所以實現了服務與服務的調用
Spring cloud 有兩種服務調用方式,而這一種是 Feign,它集成了Ribbon,默認擁有負載均衡的效果。使用 Feign,只須要建立一個接口並註解。在實現熔斷器時,只須要實現服務的接口。
① 在pom文件配置
② 在啓動類中使用這兩個註解
③ 接口:根據服務名字調用服務提供者,以及有熔斷處理
④ 實現此接口的的實現類,擁有熔斷處理方法
⑤ 配置熔斷器儀表盤
⑥ 用儀表盤能夠監控熔斷狀況
Zuul,主要功能是路由轉發和過濾器。路由功能是微服務的一部分,根據api轉發到相應的服務。Zuul 默認和 Ribbon 結合實現了負載均衡的功能。
① 在pom文件配置
② 在啓動類中使用這個註解
③ 在yml中配置路由
④ 實現過濾器(eg:這裏根據是否攜帶token參數進行過濾)
⑤ api網關演示
ZipKin,是一個開放源代碼的分佈式跟蹤系統,用於收集服務的定時數據,以解決微服務架構中的延遲問題,包括數據的收集、存儲、查找和展示。每一個服務向 ZipKin 報告計時數據,ZipKin 會根據調用關係經過 ZipKin UI 生成依賴關係圖,顯示了多少跟蹤請求經過每一個服務,該系統讓開發者可經過一個 Web 前端輕鬆的收集和分析數據,例如用戶每次請求服務的處理時間等,可方便的監測系統中存在的瓶頸。(幾乎要在全部的pom文件添加ZipKin的依賴)
① 在pom文件配置
② 在啓動類中使用這個註解
③ 啓動鏈路追蹤服務ZipKin
Spring Boot Admin 是一套功能強大的監控管理系統。用於各個微服務系統的健康狀態、會話數量、併發數、服務資源、延遲等度量信息的收集。(幾乎要在全部的pom文件添加Admin Client的依賴)
① 在Admin Server中pom文件配置
② 在啓動類中使用這個註解
③ 啓動服務監控
-END-
後續
我的博客地址:https://www.cnblogs.com/q964024886/
GitHub地址:https://github.com/wenhaixiong