1. 程式人生 > 程式設計 >簡單瞭解SpringCloud執行原理

簡單瞭解SpringCloud執行原理

這篇文章主要介紹了簡單瞭解SpringCloud執行原理,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

SpringCloud是基於SpringBoot這一高度自動化的應用開發框架,將各類業界比較知名的、得到過實踐反饋的開元服務治理相關的技術框架進行優化整合的框架,是一種開發方式的優化和組合,,是一組框架的統稱,基於SpringBoot的starter定製,實現開箱即用的目標,通過簡單的宣告式註解,就能實現服務的呼叫、負載均衡、限流、熔斷等機制

SpringCloud的核心元件

首先要通過定製一套基於SpringBoot的starter以便快速進行框架依賴的集成於配置,所以用springcloud進行微服務開發時,在專案中通過“spring-cloud-starter-parent”父依賴來實現其他框架級元件的快速引入,雖然只是很簡單的引入了一個父依賴,但是實際上卻是引入了整個SpringBoot的框架體系一級SpringCloud框架體系的整個依賴

核心元件:

SpringCloudStarters:SpringBoot式的啟動專案,為SC提供了開箱即用的依賴管理;

Consul:是一個用Go語言編寫的服務發現與配置工具,可作為整個微服務體系的服務註冊中心;

Eureka:是一個用java語言編寫的服務註冊中心;

Feign:是一種宣告式、模組化的http客戶端,用於簡化微服務間的呼叫行為;

Ribbon:是一個程序間通訊庫(遠端過程呼叫),內建了軟體負載均衡器,主要的使用模型包括REST呼叫,支援各種序列化方案;

Zuul:是一個閘道器服務,他提供動態路由、監視、彈性、安全性等等;

Hystrix:是一個延遲和容錯庫,旨在隔離對遠端系統、服務和第三方庫的訪問點,停止級聯故障,並在不可避免的複雜分散式系統中啟用彈性;

SpringCloudConfig:配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理叢集配置,目前支援本地儲存、Git以及Subversion;

各個服務間進行通訊呼叫的核心問題,也就是通過Feign進行客戶端的服務呼叫,微服務動支援通過Eureka進行多節點叢集部署,客戶端呼叫時還需要實現負載均衡等功能,在SpringCloud中是通過Feign框架組合Ribbon框架來實現的

微服務系統中還要實現限流熔斷的核心問題:服務的限流和熔斷,如果服務間的調用出現阻塞就需要進行及時的限流,並通過熔斷來保證服務的基本可用性,可通過Zuul和Hystrix服務,通過註解的方式來提供這樣的功能機制

服務的配置管理核心問題:通過SpringCloudConfig 獨立配置服務管理來實現,通過該元件實現SC體系中所喲偶微服務應用配置的集中化管理

SpringCloud的核心註解:

@EnableDiscoveryClient:定義在spring-cloud-commons包中,便於快速實現服務註冊與發現的功能註解定義。在主啟動類上定義;

  @EnableDiscoveryClient註解的定義中通過“@import({EnableDiscoveryClientImportSelector.class})”類,此類通過定義“isEnable()”方法表示開始服務註冊與發現等功能,染紅其父型別“SpringFactoryImportSelector”通過“selectImports()”方法開始掃描eureka繼承的starter依賴包。需要在專案中引入“spring-cloud-starter-consul-discovery”依賴包,這個依賴的“META-INF/spring.factories”檔案指向具體依賴“spring-cloud-consul-discovery”,而該依賴中的“META-INF/spring-factories”檔案則包含了一系列自動配置類,這些自動配置類會在應用啟動時進行初始化和載入,完成微服務與Eureka的連線。

以上說明了SC進行微服務自動發現註冊配置的基本原理,實際上還是基於SpringBoot的機制來實現的,具體怎樣互動連線的可看“spring-cloud-consul-discovery”的原始碼

@EnableFeignClient:用於告訴框架掃描所有通過註解@FeignClient定義的feign客戶端。服務消費方通過@EnableFeignClients註解開啟配置後,可以通過@FeignClient註解就可以進行服務呼叫了,而且實現了客戶端負載均衡。這個註解預設是會預設開啟Ribbon代理的,而Ribbon是實現客戶端負載均衡的一個元件,通過從Eureka拉取服務節點資訊,從而以輪詢的方式轉發客戶端呼叫請求到不同的服務端節點來實現負載均衡。

@EnableCircuitBreake:通過此註解來使用斷路器,該註解會引入Hystrix的配置,其過程與@EnableEurekaClient註解的過程一致,通過匯入EnableCircuitBreakerImportSelector類,開啟斷路器設定,如果專案中引入了“spring-cloud-starter-hystrix”依賴包,那麼在應用載入時會初始化Hystrix相關的自動配置類。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。