springcloud
springcloud是微服務架構的集大成者,将一系列優秀的元件進行了整合。基于springboot建構,對我們熟悉spring的程式員來說,上手比較容易。
通過一些簡單的注解,我們就可以快速的在應用中配置一下常用子產品并建構龐大的分布式系統。
SpringCloud的元件相當繁雜,擁有諸多子項目。重點關注Netflix
springcloud的版本說明:
springcloud項目是由多個獨立項目集合而成的,每個項目都是獨立的,各自進行自己的疊代和版本釋出。是以springcloud不友善使用版本号來管理,而是使用版本名。以避免和子項目版本号的沖突。
版本名的來源是倫敦的地鐵站名,以字母排序。比如最早的Release版本為Angel,第二個Release版本為Brixton。。。
當一個版本的update積累的比較多或者解決了一個嚴重bug時,會釋出一個ServiceRelease版本,簡稱SR,後面帶的數字就是該大版本下的第一次釋出
從官網上看,springcloud的F版本是基于springboot的2.0.x建構,之前的是基于springboot的1.5.x建構
下面隻簡單介紹下經常用的5個
- 服務發現——Netflix Eureka
- 客服端負載均衡——Netflix Ribbon
- 斷路器——Netflix Hystrix
- 服務網關——Netflix Zuul
- 分布式配置——Spring Cloud Config
Eureka
作用:實作服務治理(服務注冊與發現)
簡介:Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理子產品。
由兩個元件組成:
Eureka服務端和Eureka用戶端。
Eureka服務端用作服務注冊中心。支援叢集部署。
Eureka用戶端是一個java用戶端,用來處理服務注冊與發現。
在應用啟動時,Eureka用戶端向服務端注冊自己的服務資訊,同時将服務端的服務資訊緩存到本地。用戶端會和服務端周期性的進行心跳互動,以更新服務租約和服務資訊。
Ribbon
作用:Ribbon,主要提供客戶側的軟體負載均衡算法。
簡介:Spring Cloud Ribbon是一個基于HTTP和TCP的用戶端負載均衡工具,它基于Netflix Ribbon實作。通過Spring Cloud的封裝,可以讓我們輕松地将面向服務的REST模版請求自動轉換成用戶端負載均衡的服務調用。
注意看上圖,關鍵點就是将外界的rest調用,根據負載均衡政策轉換為微服務調用。Ribbon有比較多的負載均衡政策,以後專門講解。
Hystrix
作用:斷路器,保護系統,控制故障範圍。
簡介:為了保證其高可用,單個服務通常會叢集部署。由于網絡原因或者自身的原因,服務并不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求湧入,Servlet容器的線程資源會被消耗完畢,導緻服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的“雪崩”效應。
Zuul
作用:api網關,路由,負載均衡等多種作用
簡介:類似nginx,反向代理的功能,不過netflix自己增加了一些配合其他元件的特性。
在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就建立了一面牆,這面牆直接與調用方通信進行權限控制,後将請求均衡分發給背景服務端。
Config
作用:配置管理
簡介:SpringCloud Config提供伺服器端和用戶端。伺服器存儲後端的預設實作使用git,是以它輕松支援标簽版本的配置環境,以及可以通路用于管理内容的各種工具。
這個還是靜态的,得配合Spring Cloud Bus實作動态的配置更新。
閱讀更多SpringCloud系列文章,請檢視原文:
https://www.jianshu.com/p/aefb82837241