Spring Cloud簡介


Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。


Spring Cloud包含了多個子專案(針對分散式系統中涉及的多個不同開源產品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等專案。


微服務架構


“微服務架構”在這幾年非常的火熱,以至於關於微服務架構相關的產品社群也變得越來越活躍(比如:netflix、dubbo),Spring Cloud也因Spring社群的強大知名度和影響力也被廣大架構師與開發者備受關注。


那麼什麼是“微服務架構”呢?簡單的說,微服務架構就是將一個完整的應用從資料儲存開始垂直拆分成多個不同的服務,每個服務都能獨立部署、獨立維護、獨立擴充套件,服務與服務間通過諸如RESTful API的方式互相呼叫。


對於“微服務架構”,大家在網際網路可以搜尋到很多相關的介紹和研究文章來進行學習和了解。也可以閱讀始祖Martin Fowler的《Microservices》,本文不做更多的介紹和描述。


服務註冊與發現


在簡單介紹了Spring Cloud和微服務架構之後,下面迴歸本文的主旨內容,如何使用Spring Cloud搭建服務註冊與發現模組。


這裡我們會用到Spring Cloud Netflix,該專案是Spring Cloud的子專案之一,主要內容是對Netflix公司一系列開源產品的包裝,它為Spring Boot應用提供了自配置的Netflix OSS整合。通過一些簡單的註解,開發者就可以快速的在應用中配置一下常用模組並構建龐大的分散式系統。它主要提供的模組包括:服務發現(Eureka),斷路器(Hystrix),智慧路有(Zuul),客戶端負載均衡(Ribbon)等。


所以,我們這裡的核心內容就是服務發現模組:Eureka。

負載均衡

在Spring Cloud框架中,負載均衡服務本身也要作為一個發現客戶端註冊到Eureka伺服器上。客戶發起一個請求時,需要在Eureke伺服器上發現負載均衡服務,負載均衡服務通過RestTemplate呼叫微服務的介面時,會通過Ribbon進行負載均衡。這樣,不同的服務請求會由負載均衡機制分別呼叫微服務的不同例項。

服務閘道器

在整個Spring Cloud微服務框架裡,Zuul扮演著”智慧閘道器“的角色。一方面,Zuul是接入閘道器,起到反向代理的作用,是外部消費者請求內部服務的唯一入口。另一方面,Zuul也具備過濾功能,通過在執行時注入過濾規則可實現使用者鑑權、動態路由、灰度釋出、A/B測試、負載限流等功能。


Zuul的大部分功能都是通過過濾功能來完成的,Zuul可以提供四種標準型別的過濾。

內部呼叫

在微服務的開發中,我們還會碰到很多微服務之間內部相互呼叫的情況,特別是對資料服務的呼叫。在Spring Cloud中,有兩種方式可以,一種是使用RestTemplate,另一種是使用Feign框架。


RestTemplate呼叫另一個微服務的介面我們在系列五負載均衡的文章中已經講過具體的實現,本章不再累述。


Feign是宣告式Web服務客戶端,所謂宣告式,指的是在程式碼中,將要呼叫的其它內部微服務提供的Restful API宣告為自己的介面,該介面使用FeignClient註解。聲明後,在本微服務中就可以通過介面注入的方式消費其它微服務的提供的Restful API了。


Feign也內建有負載均衡Ribbon,會採用輪訓式的負載均衡方式。

熔斷機制

熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。我們在各種場景下都會接觸到熔斷這兩個字。高壓電路中,如果某個地方的電壓過高,熔斷器就會熔斷,對電路進行保護。股票交易中,如果股票指數過高,也會採用熔斷機制,暫停股票的交易。同樣,在微服務架構中,熔斷機制也是起著類似的作用。當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的呼叫,快速返回錯誤的響應資訊。當檢測到該節點微服務呼叫響應正常後,恢復呼叫鏈路。


在Spring Cloud框架裡,熔斷機制通過Hystrix實現。Hystrix會監控微服務間呼叫的狀況,當失敗的呼叫到一定閾值,預設是5秒內20次呼叫失敗,就會啟動熔斷機制。熔斷機制的註解是@HystrixCommand,Hystrix會找有這個註解的方法,並將這類方法關聯到和熔斷器連在一起的代理上。當前,@HystrixCommand僅當類的註解為@Service或@Component時才會發揮作用。


上一節中,我們提到,微服務之間的呼叫可以通過兩種方式,一個是RestTemplate,另一個是Feign。相對應,在這兩種呼叫方式下,都有Hystrix呼叫方法。

下面,我們將為大家介紹一門Spring Cloud微服務實戰的課程,手把手教您從搭建框架到服務應用,快速掌握Spring Cloud微服務必備實踐知識:

<<<<<<<<<<<<<<<<<<<<<線上系列課>>>>>>>>>>>>>>>>>>>>

講師介紹:

王浩彬老師,開發組長/高階工程師/技術專家
曾任中科院雲端計算Java工程師、某公司架構諮詢師等職位。參與開發多個大型專案,設計主導公司核心技術平臺,參與廣州君晟資訊科技公司、天安金交所等公司專案和架構諮詢。 熱愛開源,深入瞭解Spring Cloud,多個專案開源在Github與[email protected]上,並獲得開源中國的推薦,著有Spring Cloud相關的AG開源系列作品。

課程介紹:

學習了本課程您能掌握以下知識點:1、瞭解Spring Cloud核心模組構成概要,實操通過模版空程式碼搭建自有框架,瞭解Spring Cloud核心模組拉通細節; 2、實操搭建服務腳手架,快速構建服務增刪改查基礎模組,考慮利用模版程式碼來加速解決; 3、服務呼叫例項講解,瞭解Feign、Hystrix熔斷機制;擴充套件服務鑑權; 4、統一Api閘道器中心搭建,實操完成使用者身份認證,無狀態服務開發設計,前後端互動認證標準等。

課程特色:專屬答疑+課件資料提供+視訊無限時回放+VIP交流群

開課時間:隨到隨學,自由支配

.