??Spring Cloud 作為Java語言的微服務(wù)框架 ,它依賴于 Spring Boot,有快速開發(fā)、持續(xù)交付和 容易部署等特點(diǎn)。 Spring Cloud的組件非常多,涉及微服務(wù)的方方面面,
??SpringCloud 的首要目標(biāo)就是通過提供一系列開發(fā)組件和框架,幫助開發(fā)者迅速搭建一個分布式的微服務(wù)系統(tǒng) 。Spring Cloud是通過包裝其他技術(shù)框架來實(shí)現(xiàn)的,例如包裝開源的Netflix oss 組件, 實(shí)現(xiàn)了一套通過基于注解、 Java配置和基于模版開發(fā)的微服務(wù)框架。
1、Spring Cloud常用組件
- 服務(wù)發(fā)現(xiàn)——Netflix Eureka
- 客服端負(fù)載均衡——Netflix Ribbon
- 斷路器——Netflix Hystrix
- 服務(wù)網(wǎng)關(guān)——Netflix Zuul
- 分布式配置——Spring Cloud Config
1.1 服務(wù)注冊和發(fā)現(xiàn)組件 Eureka

作用:實(shí)現(xiàn)服務(wù)治理(服務(wù)注冊與發(fā)現(xiàn))
簡介:Spring Cloud Eureka是Spring Cloud Netflix項(xiàng)目下的服務(wù)治理模塊。由兩個組件組成:Eureka服務(wù)端和Eureka客戶端。Eureka服務(wù)端用作服務(wù)注冊中心。支持集群部署。Eureka客戶端是一個java客戶端,用來處理服務(wù)注冊與發(fā)現(xiàn)。在應(yīng)用啟動時,Eureka客戶端向服務(wù)端注冊自己的服務(wù)信息,同時將服務(wù)端的服務(wù)信息緩存到本地。客戶端會和服務(wù)端周期性的進(jìn)行心跳交互,以更新服務(wù)租約和服務(wù)信息。
1.2 負(fù)載均衡組件 Ribbon

作用:Ribbon,主要提供客戶側(cè)的軟件負(fù)載均衡算法。
簡介:Spring Cloud Ribbon是一個基于HTTP和TCP的客戶端負(fù)載均衡工具,它基于Netflix Ribbon實(shí)現(xiàn)。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請求自動轉(zhuǎn)換成客戶端負(fù)載均衡的服務(wù)調(diào)用。注意看上圖,關(guān)鍵點(diǎn)就是將外界的rest調(diào)用,根據(jù)負(fù)載均衡策略轉(zhuǎn)換為微服務(wù)調(diào)用。
1.3 熔斷組件 Hystrix

作用:斷路器,保護(hù)系統(tǒng),控制故障范圍。
簡介:為了保證其高可用,單個服務(wù)通常會集群部署。由于網(wǎng)絡(luò)原因或者自身的原因,服務(wù)并不能保證100%可用,如果單個服務(wù)出現(xiàn)問題,調(diào)用這個服務(wù)就會出現(xiàn)線程阻塞,此時若有大量的請求涌入,Servlet容器的線程資源會被消耗完畢,導(dǎo)致服務(wù)癱瘓。服務(wù)與服務(wù)之間的依賴性,故障會傳播,會對整個微服務(wù)系統(tǒng)造成災(zāi)難性的嚴(yán)重后果,這就是服務(wù)故障的“雪崩”效應(yīng)。
1.4 路由網(wǎng)關(guān) Zuul

作用:實(shí)現(xiàn)路由轉(zhuǎn)發(fā)、請求過濾
簡介:路由網(wǎng)關(guān)Zuul有智能路由和過濾的功能。內(nèi)部服務(wù)的API接口通過Zuul網(wǎng)關(guān)統(tǒng)一對外暴露,內(nèi)部服務(wù)的API接口不直接暴露,防止了內(nèi)部服務(wù)敏感信息對外暴露。在默認(rèn)的情況下, Zuul和Ribbon相結(jié)合,能夠做到負(fù)載均衡 、智能路由。Zuul的過濾功能是通過攔截請求來實(shí)現(xiàn)的 ,可以對一些用戶的角色和權(quán)限進(jìn)行判斷 ,起到安全驗(yàn)證的作用 ,同時也可以用于輸出實(shí)時的請求曰志。
1.5 Config

作用:配置管理
簡介:SpringCloud Config提供服務(wù)器端和客戶端。Server 端讀取本地倉庫或者遠(yuǎn)程倉庫的配置文件,所有的 Client 向 Server 讀 取配置信息,從而達(dá)到配置文件統(tǒng)一管理的目的。服務(wù)器存儲后端的默認(rèn)實(shí)現(xiàn)使用git,因此它輕松支持標(biāo)簽版本的配置環(huán)境,以及可以訪問用于管理內(nèi)容的各種工具。 通常情況下, SpringCloudConfig和 Spring CloudBus相互配合刷新指定 Client或所有 Client的配置文件。