1. Spring Cloud 引言
首先我們打開spring 的官網:https://spring.io/
我們會看到這樣一張圖片

這個圖片告訴我們,開發我們的應用程序就像蓋樓一樣,
首先我們需要搭建Spring Boot, 在此基礎上可以搭建Spring Cloud,再往上面可以搭建Spring Cloud Data Flow
2.Spring Cloud 概述
協調:分布式系統簡化
構建分布式系統不需要很復雜且容易出錯。
Spring Cloud為最常見的分布式系統模式提供了簡單易用的編程模型,幫助開發人員構建彈性,可靠和協調的應用程序。
Spring Cloud建立在Spring Boot的基礎之上,使開發人員可以輕松上手並快速提高生產力。

看到這個圖片是不是一臉懵逼?不要怕,下面我們就一次來講解上面圖片是神馬東東。
2.1 Spring Cloud 核心特色
2.1.1 服務發現(Service Discovery)
一個動態目錄,支持客戶端負載平衡和智能路由
2.1.2 斷路器 (Circuit Breaker)
微型服務容錯與監控儀表板
2.1.3 配置服務器 (Configuration Server)
為您的分散式應用程序提供動態,集中的配置管理
2.1.4 API 網關(API Gateway)
API消費者(瀏覽器,設備,其他API)的單一入口點
2.1.5 分布式追蹤(Distributed Tracing)
分布式系統的自動應用程序檢測和操作可見性
2.1.6 OAuth2
支持單點登錄,令牌中繼和令牌交換
2.1.7 Consumer-Driven Contracts
服務演進模式支持基於HTTP和基於消息的API
2.2 Spring Cloud 參考手冊
Spring Cloud 參考手冊:http://cloud.spring.io/spring-cloud-static/Edgware.SR3/
Getting Started Guides
- Config 配置
- Registry 注冊
- Breakers 斷路器
- Load Balancing 負載均衡
- Routing 路由
3. Spring Cloud
Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領導選舉,分布式 會話,群集狀態)。 分布式系統的協調導致鍋爐板模式,使用Spring Cloud開發人員可以快速站出實現這些模式的服務和應用程序。 它們可以在任何分布式環境中運行良好,包括開發人員自己的筆記本電腦,裸機數據中心以及Cloud Foundry等托管平台。
Spring Cloud通過提供一大堆庫來增強應用程序在添加到類路徑時的行為,從而構建Spring Boot。
您可以利用基本的默認行為來快速入門,然后在需要時可以配置或擴展以創建自定義解決方案。
3.1 快速開始
發行版標簽(見下文)實際上只在一個工件中明確使用:“spring-cloud-dependencies”(所有其他標簽都有與其父項目相關的普通數字發布標簽)。
靈活性POM是您可以用作依賴關系管理的物料清單。 使用配置客戶端和eureka的最新版本的示例(更改工件標識以引入其他啟動器):
在項目中開始使用spring-cloud的推薦方法是使用依賴管理系統 - 下面的代碼片段可以復制並粘貼到您的構建中。 需要幫忙? 請參閱我們有關使用Maven和Gradle構建的入門指南。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.M9</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies>
<repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/libs-milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
3.2 特色
Spring Cloud專注於為典型用例和可擴展性機制提供良好的即時體驗,以覆蓋其他人。
- 分布式/版本化配置
- 服務注冊和發現
- 路由
- 服務對服務呼叫
- 負載均衡
- 斷路器
- 全局鎖定
- 領導選舉和集群狀態
- 分布式消息
Spring Cloud采用非常明確的方法,通常只有類路徑更改和/或注釋才能獲得許多功能。 作為發現客戶端的示例應用程序:
@SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
3.3 主要的項目
由git存儲庫支持的集中式外部配置管理。 配置資源直接映射到Spring`Environment`,但如果需要可以由非Spring應用程序使用。
與各種Netflix OSS組件(Eureka,Hystrix,Zuul,Archaius等)集成。
用於將服務和服務實例與分布式消息一起鏈接的事件總線。 用於跨群集傳播狀態更改(例如配置更改事件)。
將您的應用程序與Pivotal Cloud Foundry集成。 提供服務發現實現,還可以輕松實現受SSO和OAuth2保護的資源。
為構建實現Open Service Broker API的服務代理提供了一個起點。
領導選舉和常見的有狀態模式,為Zookeeper,Redis,Hazelcast,Consul提供和實施。
與Hashicorp Consul進行服務發現和配置管理。
為Zuul代理中的負載均衡OAuth2休息客戶端和身份驗證報頭中繼提供支持。
Spring Cloud應用程序的分布式跟蹤,與Zipkin,HTrace和基於日志的(例如ELK)跟蹤兼容。
現代運行時組合式微服務應用程序的雲本地編排服務。 易於使用的DSL,拖放式GUI和REST-API一起簡化了基於微服務的數據管道的整體編排。
輕量級事件驅動的微服務框架,可快速構建可連接到外部系統的應用程序。 使用Apache Kafka或RabbitMQ在Spring Boot應用程序之間發送和接收消息的簡單聲明模型。
Spring Cloud Stream App Starters是基於Spring Boot的Spring Integration應用程序,可與外部系統集成。
一個短命的微服務框架,用於快速構建執行有限數據處理的應用程序。 向Spring Boot應用程序添加功能性和非功能性功能的簡單聲明。
Spring Cloud任務應用程序啟動器是Spring Boot應用程序,可能是任何進程,包括不能永久運行的Spring Batch作業,並且會在有限的數據處理期結束/停止。
使用Apache Zookeeper進行服務發現和配置管理。
與托管的Amazon Web Services輕松集成。 它提供了一種使用眾所周知的Spring成語和API(如消息傳遞或緩存API)與AWS提供的服務進行交互的便捷方式。
開發人員可以圍繞托管服務構建應用程序,而無需關心基礎架構或維護。
讓各種平台上的PaaS應用程序輕松連接到后端服務,如數據庫和消息代理(該項目以前稱為“Spring Cloud”)。
Spring Boot式初學者項目,可以減輕Spring Cloud消費者的依賴性管理。 (作為一個項目終止並與Angel.SR2之后的其他項目合並。)
Spring Boot CLI插件,用於在Groovy中快速創建Spring Cloud組件應用程序
Spring Cloud Contract是一個涵蓋各種解決方案的綜合項目,可幫助用戶成功實施消費者驅動合同方法。
Spring Cloud Gateway是基於Project Reactor的智能可編程路由器。
Spring Cloud OpenFeign通過自動配置和綁定到Spring Environment和其他Spring編程模型成語來為Spring Boot應用程序提供集成。
Release Trains
Spring Cloud是一個由獨立項目組成的綜合項目,原則上它有不同的發布節奏。 為了管理投資組合,BOM(物料清單)與個別項目(參見下文)中的一組策略一起發布。 發行版有名稱,而不是版本,以避免與子項目混淆。 名稱是一個字母順序(所以你可以按時間順序排列)與倫敦地鐵站的名字(“天使”是第一個版本,“布里克斯頓”是第二個)。 當單個項目的點數累積達到臨界質量時,或者其中一個項目的關鍵缺陷需要提供給每個人時,發布培訓將推出名為“.SRX”的“服務版本”, 其中“X”是一個數字。
發布內容列表
| Component | Edgware.SR3 | Finchley.M9 | Finchley.BUILD-SNAPSHOT |
|---|---|---|---|
| spring-cloud-aws | 1.2.2.RELEASE | 2.0.0.M4 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-bus | 1.3.2.RELEASE | 2.0.0.M7 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.M1 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-commons | 1.3.3.RELEASE | 2.0.0.M9 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-contract | 1.2.4.RELEASE | 2.0.0.M8 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-config | 1.4.3.RELEASE | 2.0.0.M9 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-netflix | 1.4.4.RELEASE | 2.0.0.M8 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-security | 1.2.2.RELEASE | 2.0.0.M3 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-cloudfoundry | 1.1.1.RELEASE | 2.0.0.M3 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-consul | 1.3.3.RELEASE | 2.0.0.M7 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-sleuth | 1.3.3.RELEASE | 2.0.0.M9 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-stream | Ditmars.SR3 | Elmhurst.RC3 | Elmhurst.BUILD-SNAPSHOT |
| spring-cloud-zookeeper | 1.2.1.RELEASE | 2.0.0.M7 | 2.0.0.BUILD-SNAPSHOT |
| spring-boot | 1.5.10.RELEASE | 2.0.0.RELEASE | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-task | 1.2.2.RELEASE | 2.0.0.M3 | 2.0.0.RELEASE |
| spring-cloud-vault | 1.1.0.RELEASE | 2.0.0.M6 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-gateway | 1.0.1.RELEASE | 2.0.0.M9 | 2.0.0.BUILD-SNAPSHOT |
| spring-cloud-openfeign | 2.0.0.M2 | 2.0.0.BUILD-SNAPSHOT |
Finchley構建並使用Spring Boot 2.0.x,並且不希望與Spring Boot 1.5.x一起使用。
Dalston和Edgware發行版建立在Spring Boot 1.5.x上,並且不希望與Spring Boot 2.0.x一起使用。
Camden發行版建立在Spring Boot 1.4.x上,但也使用1.5.x進行測試。
注意:Brixton和Angel發布的列車在2017年7月被標記為生命周期(EOL)。
Brixton發行版建立在Spring Boot 1.3.x的基礎上,但也使用1.4.x進行測試。
天使版本系列建立在Spring Boot 1.2.x上,並且在某些地區與Spring Boot 1.3.x不兼容。 Brixton建立在Spring Boot 1.3.x之上,並且與1.2.x不兼容。一些基於Angel構建的庫和大多數應用程序在Brixton上運行良好,但使用spring-cloud-security 1.0.x中的OAuth2功能時(大多數情況下它們被移植到1.3.0中的Spring Boot)需要進行更改。
使用您的依賴管理工具來控制版本。如果您使用的是Maven,請記住第一個版本聲明為勝,所以按照順序聲明BOM,第一個版本通常是最新的版本(例如,如果要使用Spring Boot 1.3.6和Brixton.RELEASE,則將Boot BOM第一)。如果您使用Spring依賴管理插件,則同樣的規則適用於Gradle。
注意:發行版包含彈簧雲依賴項以及spring-cloud-starter-parent。您可以像使用spring-boot-starter-parent一樣使用父級(如果您使用的是Maven)。如果您只需要依賴管理,“依賴”版本是同一事物(僅包含依賴管理,無插件聲明或對Spring或Spring Boot的直接引用)的BOM-only版本。如果您使用Spring Boot父POM,則可以使用Spring Cloud中的BOM。情況正好相反:使用雲端父級使得不可能或至少不可靠,也可以使用啟動物料清單來更改Spring Boot的版本及其依賴關系。
