一篇文章快速了解Spring Cloud
1.Spring Cloud是什么?能做什么?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。
Spring并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。
2.SpringCloud 和Dubbo對比
根據(jù)微服務(wù)架構(gòu)在各方面的要素,看看Spring Cloud和Dubbo都提供了哪些支持。

3.核心組件
Spring Cloud的核心組件:
◆ 服務(wù)發(fā)現(xiàn)——Netflix Eureka
◆ 客服端負(fù)載均衡——Netflix Ribbon
◆ 斷路器——Netflix Hystrix
◆ 服務(wù)網(wǎng)關(guān)——Netflix Zuul
◆ 分布式配置——Spring Cloud Config
1.Eureka(服務(wù)注冊中心)
一個RESTful服務(wù),用來定位運行在AWS地區(qū)(Region)中的中間層服務(wù)。由兩個組件組成:Eureka服務(wù)器和Eureka客戶端。Eureka服務(wù)器用作服務(wù)注冊服務(wù)器。Eureka客戶端是一個java客戶端,用來簡化與服務(wù)器的交互、作為輪詢負(fù)載均衡器,并提供服務(wù)的故障切換支持。Netflix在其生產(chǎn)環(huán)境中使用的是另外的客戶端,它提供基于流量、資源利用率以及出錯狀態(tài)的加權(quán)負(fù)載均衡。

2.Ribbon(負(fù)載均衡器)
Ribbon,主要提供客戶側(cè)的軟件負(fù)載均衡算法。
Ribbon客戶端組件提供一系列完善的配置選項,比如連接超時、重試、重試算法等。Ribbon內(nèi)置可插拔、可定制的負(fù)載均衡組件。下面是用到的一些負(fù)載均衡策略:
◆ 簡單輪詢負(fù)載均衡
◆ 加權(quán)響應(yīng)時間負(fù)載均衡
◆ 區(qū)域感知輪詢負(fù)載均衡
◆ 隨機(jī)負(fù)載均衡
Ribbon中還包括以下等功能:
◆ 易于與服務(wù)發(fā)現(xiàn)組件(比如Netflix的Eureka)集成
◆ 使用Archaius完成運行時配置
◆ 使用JMX暴露運維指標(biāo),使用Servo發(fā)布
◆ 多種可插拔的序列化選擇

3.Hystrix(斷路器)
斷路器可以防止一個應(yīng)用程序多次試圖執(zhí)行一個操作,即很可能失敗,允許它繼續(xù)而不等待故障恢復(fù)或者浪費 CPU 周期,而它確定該故障是持久的。斷路器模式也使應(yīng)用程序能夠檢測故障是否已經(jīng)解決。如果問題似乎已經(jīng)得到糾正,應(yīng)用程序可以嘗試調(diào)用操作。
斷路器增加了穩(wěn)定性和靈活性,以一個系統(tǒng),提供穩(wěn)定性,而系統(tǒng)從故障中恢復(fù),并盡量減少此故障的對性能的影響。它可以幫助快速地拒絕對一個操作,即很可能失敗,而不是等待操作超時(或者不返回)的請求,以保持系統(tǒng)的響應(yīng)時間。如果斷路器提高每次改變狀態(tài)的時間的事件,該信息可以被用來監(jiān)測由斷路器保護(hù)系統(tǒng)的部件的健康狀況,或以提醒管理員當(dāng)斷路器跳閘,以在打開狀態(tài)。

4.Zuul(網(wǎng)關(guān))
類似nginx,反向代理的功能,不過netflix自己增加了一些配合其他組件的特性。

5.Spring Cloud Config(配置中心)
這個還是靜態(tài)的,得配合Spring Cloud Bus實現(xiàn)動態(tài)的配置更新。

4.Spring Cloud架構(gòu)流程

通過這張圖,我們來了解一下各組件配置使用運行流程:
1. 請求統(tǒng)一通過API網(wǎng)關(guān)(Zuul)來訪問內(nèi)部服務(wù).
2. 網(wǎng)關(guān)接收到請求后,從注冊中心(Eureka)獲取可用服務(wù)
3. 由Ribbon進(jìn)行均衡負(fù)載后,分發(fā)到后端具體實例
4. 微服務(wù)之間通過Feign進(jìn)行通信處理業(yè)務(wù)
5. Hystrix負(fù)責(zé)處理服務(wù)超時熔斷
6. Turbine監(jiān)控服務(wù)間的調(diào)用和熔斷相關(guān)指標(biāo)
5.Spring Cloud體系介紹
Spring Cloud由眾多子項目組成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系統(tǒng)及微服務(wù)常用的工具,如配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、一次性token、全局鎖、選主、分布式會話和集群狀態(tài)等,滿足了構(gòu)建微服務(wù)所需的所有解決方案。
具體如下:
1、Spring Cloud Config 配置中心,利用git集中管理程序的配置。
2、Spring Cloud Netflix 集成眾多Netflix的開源軟件
3、Spring Cloud Bus 消息總線,利用分布式消息將服務(wù)和服務(wù)實例連接在一起,用于在一個集群中傳播狀態(tài)的變化
4、Spring Cloud for Cloud Foundry 利用Pivotal Cloudfoundry集成你的應(yīng)用程序
5、Spring Cloud Cloud Foundry Service Broker 為建立管理云托管服務(wù)的服務(wù)代理提供了一個起點。
6、Spring Cloud Cluster 基于Zookeeper, Redis, Hazelcast, Consul實現(xiàn)的領(lǐng)導(dǎo)選舉和平民狀態(tài)模式的抽象和實現(xiàn)。
7、Spring Cloud Consul 基于Hashicorp Consul實現(xiàn)的服務(wù)發(fā)現(xiàn)和配置管理。
8、Spring Cloud Security 在Zuul代理中為OAuth2 rest客戶端和認(rèn)證頭轉(zhuǎn)發(fā)提供負(fù)載均衡
9、Spring Cloud Sleuth SpringCloud應(yīng)用的分布式追蹤系統(tǒng),和Zipkin,HTrace,ELK兼容。
10、Spring Cloud Data Flow 一個云本地程序和操作模型,組成數(shù)據(jù)微服務(wù)在一個結(jié)構(gòu)化的平臺上。
11、Spring Cloud Stream 基于Redis, Rabbit, Kafka實現(xiàn)的消息微服務(wù),簡單聲明模型用以在Spring Cloud應(yīng)用中收發(fā)消息。
12、Spring Cloud Stream App Starters 基于Spring Boot為外部系統(tǒng)提供spring的集成
13、Spring Cloud Task 短生命周期的微服務(wù),為SpringBooot應(yīng)用簡單聲明添加功能和非功能特性。
14、Spring Cloud Task App Starters
15、Spring Cloud Zookeeper 服務(wù)發(fā)現(xiàn)和配置管理基于Apache Zookeeper。
16、Spring Cloud for Amazon Web Services 快速和亞馬遜網(wǎng)絡(luò)服務(wù)集成。
17、Spring Cloud Connectors 便于PaaS應(yīng)用在各種平臺上連接到后端像數(shù)據(jù)庫和消息經(jīng)紀(jì)服務(wù)。
18、Spring Cloud Starters (項目已經(jīng)終止并且在Angel.SR2后的版本和其他項目合并)
19、Spring Cloud CLI 插件用Groovy快速的創(chuàng)建Spring Cloud組件應(yīng)用。
當(dāng)然這個數(shù)量還在一直增加...
6.Spring Cloud框架特點
1.約定優(yōu)于配置
2.適用于各種環(huán)境
開發(fā)、部署在 PC Server或各種云環(huán)境(例如阿里云、AWS等)均可。
3.隱藏了組件的復(fù)雜性,并提供聲明式、無xml的配置方式。
4.開箱即用,快速啟動。
5.輕量級的組件
Spring Cloud整合的組件大多比較輕量。例如 Eureka、Zuul,等等,都是各自領(lǐng)域輕量級的實現(xiàn)。
6.組件豐富,功能齊全
Spring Cloud為微服務(wù)架構(gòu)提供了非常完整的支持。例如,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、微服務(wù)網(wǎng)關(guān)等。
7.選型中立、豐富
例如, Spring Cloud支持使用 Eureka、 Zookeeper或 Consul實現(xiàn)服務(wù)發(fā)現(xiàn)。
8.靈活
Spring Cloud的組成部分是解耦的,開發(fā)人員可按需靈活挑選技術(shù)選型。

