Spring Cloud簡介

Spring Cloud簡介

 1、Spring Cloud簡介

SpringCloud是微服務架構中的集成,將一系列優秀的組件進行了整合。基於SpringBoot構建,對熟希spring的程序員來講,表容易上手。java

經過簡單的註解,就能夠快速的在應用中配置一下經常使用模塊並構建龐大的分佈式系統。nginx

那麼什麼是「微服務架構」呢?簡單的說,微服務架構就是將一個完整的應用從數據存儲開始垂直拆分紅多個不一樣的服務,每一個服務都能獨立部署、獨立維護、獨立擴展,服務與服務間經過諸如RESTful API的方式互相調用。git

SpringCloud的組件至關繁雜,擁有諸多子項目。重點關注NetFlix。程序員

2、SpringCloud版本

SpringCloud項目是由多個獨立項目集合而成的,每個項目都是獨立的,各自進行本身的版本迭代和版本發佈。因此SpringCloud不方便使用版本號來管理,而是使用版本名。以免和子項目版本號的衝突。算法

版本名的來源是倫敦的地鐵站名,以字母排序。好比最先的Release版本爲Angel,第二個的Release版本爲Brixton。spring

當一個版本的update積累的比較多或者解決了一個嚴重bug時,會發佈一個ServiceRelease版本,簡稱SR,後面帶的數字爲該大版本下的第一次發佈。後端

從上圖能夠看出,springcloud的F版本是基於springboot的2.0.x構建,以前的是基於springboot的1.5.x構建。api

Spring Cloud的版本:Brixton、Camden、Dalston、Edgware、Finchley。緩存

3、經常使用的5個組件

  • Netflix Eureka - 服務發現
  • Netflix Ribbon - 客戶端負載均衡
  • Netflix Hystrix - 斷路器
  • Netflix Zuul - 服務網關
  • Spring Cloud Config - 分佈式配置

3.1 Netflix Eureka

做用:實現服務治理(服務註冊和發現)springboot

說明:Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理模塊。有兩個組件組成:Eureka服務端和Eureka客戶端。

      Eureka服務端做用服務註冊中心,支持集羣部署。

           Eureka客戶端是一個java客戶端,用來處理服務註冊和發現。

原理:在應用啓動時,Eureka客戶端向服務端註冊本身的服務信息,同時將服務端的服務信息緩存到本地,客戶端會和服務端週期性買的進行心跳交互,以便更新服務租約和服務信息。

3.2 Netflix Ribbon

做用:Ribbon 主要提供客戶側的軟件負載均衡算法。

說明:Spring Cloud Ribbon是一個基於HTTP和TCP的客戶端負載均衡工具,它基於Netflix Ribbon實現。經過Spring Cloud的封裝,能夠輕鬆的將面向服務的REST模板請求自動轉換成客戶端負載均衡的服務調用。

關鍵點就是將外界的rest調用,根據負載均衡策略轉換爲微服務的調用。Ribbon有比較多的負載均衡策略,可自行查閱資料。

3.3 Netflix Hystrix  

做用:斷路器,保護系統,控制故障範圍。

說明:爲了保證其高可用,單個服務一般會集羣部署。因爲網絡緣由或者自身的緣由,服務並不能保證100%可用,若是單個服務器出現問題,調用這個服務就會出現線程阻塞,此時若大量的請求涌入,Servlet容器的線程資源會被消耗完畢,致使服務癱瘓。服務於服務之間的依賴性,故障會傳播,會對整個微服務系統形成災難性的嚴重後果,這就是服務器故障的「」「雪崩」效應。

3.4 Netflix Zuul

做用:api網關,路由,負載均衡等多種做用

說明:相似nginx,方向代理的功能,不過netflix本身增長了一些配合其餘組件的特性。

在微服務架構中,後端服務每每不直接開發給調用端,而是經過一個api網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就建立了一面牆,在這面牆直接與調用方通訊進行權限控制,後將請求均衡分發給後臺服務端。

3.5 Spring Cloud Config

做用:配置管理

說明:Spring Cloud Config提供服務端和客戶端。服務器存儲後端的默認實現使用git,所以它輕鬆支持標籤的配置環境,能夠訪問做用於管理內部的各類工具。這個是靜態的,得配合Spring Cloud Bus實現動態的配置更新。

相關文章
相關標籤/搜索