[toc]
Spring Cloud構建于Spring Boot之上,它提供了一堆庫,可以在添加到類路徑時增強應用程序的行為。 您可以利用基本的默認行為來快速入門,然后在需要時,您可以配置或擴展以創建自定義解決方案。
## 快速開始
在項目中開始使用`spring-cloud`的推薦方法是使用依賴關系管理系統 - 下面的代碼片段可以復制并粘貼到您的構建中。下例使用了config和eureka
~~~
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
~~~
## 特征
spring Cloud專注于為典型用例提供良好的開箱即用體驗,并為其提供可擴展性機制。
* 分布式/版本化配置
* 服務注冊和發現
* 路由
* 服務到服務調用
* 負載均衡
* 斷路器
* 全局鎖
* 領導選舉和集群狀態
* 分布式消息
Spring Cloud采用純粹的聲明方法,通常只需更改類路徑和/或注解即可獲得許多功能。 作為發現客戶端的示例應用程序:
~~~java
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
~~~
## 主要項目
### Spring Cloud Config
由git存儲庫支持的集中式外部配置管理。 配置資源直接映射到Spring`Environment`,但如果需要,可以由非Spring應用程序使用。
### Spring Cloud Netflix
與各種Netflix OSS組件集成(Eureka,Hystrix,Zuul,Archaius等)。
### Spring Cloud Bus
用于將服務和服務實例與分布式消息傳遞鏈接在一起的事件總線 用于跨群集傳播狀態更改(例如,配置更改事件)。
### Spring Cloud for Cloud Foundry
將您的應用程序與Pivotal Cloud Foundry集成。 提供服務發現實現,還可以輕松實現受SSO和OAuth2保護的資源。
### Spring Cloud Open Service Broker
提供構建實現Open Service Broker API的服務代理的起點。
### Spring Cloud Cluster
領導者選舉和共同的有狀態模式與Zookeeper,Redis,Hazelcast,Consul的抽象和實現。
### Spring Cloud Consul
Hashicorp Consul的服務發現和配置管理。
### Spring Cloud Security
為Zuul代理中的負載平衡OAuth2 rest客戶端和身份驗證頭中繼提供支持。
### Spring Cloud Sleuth
Spring Cloud應用程序的分布式跟蹤,與Zipkin,HTrace和基于日志(例如ELK)的跟蹤兼容。
### Spring Cloud Data Flow
適用于現代運行時的可組合微服務應用程序的云本機編排服務。 易于使用的DSL,拖放式GUI和REST-API共同簡化了基于微服務的數據管道的整體編排。
### Spring Cloud Stream
輕量級事件驅動的微服務框架,可快速構建可連接到外部系統的應用程序。 在Spring Boot應用程序之間使用Apache Kafka或RabbitMQ發送和接收消息的簡單聲明模型。
### Spring Cloud Stream App Starters
Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration應用程序,可提供與外部系統的集成。
### Spring Cloud Task
一種短命的微服務框架,用于快速構建執行有限數據處理的應用程序。 用于向Spring Boot應用程序添加功能和非功能功能的簡單聲明。
### Spring Cloud Task App Starters
Spring Cloud Task App Starters是Spring Boot應用程序,可能是任何進程,包括不能永久運行的Spring Batch作業,它們在有限的數據處理期后結束/停止。
### Spring Cloud Zookeeper
Apache Zookeeper的服務發現和配置管理。
### Spring Cloud for Amazon Web Services
與托管的Amazon Web Services輕松集成。 它提供了一種使用眾所周知的Spring習語和API(如消息傳遞或緩存API)與AWS提供的服務進行交互的便捷方式。 開發人員可以圍繞托管服務構建應用程序,而無需關心基礎結構或維護。
### Spring Cloud Connectors
使各種平臺中的PaaS應用程序可以輕松連接到數據庫和消息代理(該項目以前稱為“Spring Cloud”)等后端服務。
### Spring Cloud Starters
Spring Boot風格的入門項目,可以簡化Spring Cloud用戶的依賴管理。 (作為項目停產并在Angel.SR2之后與其他項目合并。)
### Spring Cloud CLI
Spring Boot CLI插件,用于在Groovy中快速創建Spring Cloud組件應用程序
### Spring Cloud Contract
Spring Cloud Contract是一個總體項目,其中包含幫助用戶成功實施消費者驅動合同方法的解決方案。
### Spring Cloud Gateway
Spring Cloud Gateway是一款基于Project Reactor的智能可編程路由器。
### Spring Cloud OpenFeign
Spring Cloud OpenFeign通過自動配置和Spring環境以及其他Spring編程模型習慣用法提供Spring Boot應用程序的集成。
### Spring Cloud Pipelines
Spring Cloud Pipelines提供了一個固定意見的部署管道,其中包含確保您的應用程序可以零停機方式部署并輕松回滾出錯的步驟。
### Spring Cloud Function
Spring Cloud Function通過函數促進業務邏輯的實現。 它支持無服務器提供商之間的統一編程模型,以及獨立運行(本地或PaaS)的能力。
## 發布列表
Spring Cloud是一個由獨立項目組成的總體項目,原則上具有不同的發布節奏。 為了管理投資組合,發布了BOM(物料清單),其中包含一組針對單個項目的依賴關系(見下文)。 發布列表有名稱而不是版本,以避免與子項目混淆。 這些名稱是一個字母序列(所以你可以按時間順序排序)倫敦地鐵站的名稱(“天使”是第一個版本,“布里克斯頓”是第二個版本)。 當各個項目的點數累積到臨界質量時,或者其中一個項目中存在一個需要每個人都可用的關鍵錯誤時,發布列表將推出名稱結尾為“.SRX”的“服務發布”, 其中“X”是一個數字。
### 發布列表內容
| Component | Edgware.SR4 | Finchley.SR1 | Finchley.BUILD-SNAPSHOT |
|---|---|---|---|
|spring-cloud-config| 1.4.4.RELEASE| 2.0.1.RELEASE |2.0.2.BUILD-SNAPSHOT|
|spring-cloud-netflix| 1.4.5.RELEASE| 2.0.1.RELEASE| 2.0.2.BUILD-SNAPSHOT|
|---|---|---|---|
Finchley使用Spring Boot 2.0.x構建,預計不會與Spring Boot 1.5.x一起使用。
使用依賴關系管理工具來控制版本。 如果您正在使用Maven,請記住聲明的第一個版本獲勝,因此按順序聲明BOM,第一個通常是最新版本(例如,如果您想使用帶有Brixton.RELEASE的Spring Boot 1.3.6,請放置引導BOM 第一)。 如果您使用Spring依賴關系管理插件,則同樣的規則適用于Gradle。
- 快速開始
- I.云原生應用
- II. Spring Cloud配置
- III. Spring Cloud Netflix
- 11 服務發現:Eureka客戶端
- 11.1 如何引入eureka客戶端
- 11.2 注冊eureka
- 12.3 使用Eureka服務端的身份驗證
- 11.4狀態頁面和健康指標
- 11.5 注冊一個安全的應用
- 11.6 eureka的監控檢查
- 11.7 eureka實例和客戶端的元數據
- 11.8 使用eureka客戶端
- 11.8.1 不使用Jersey的eureka client
- 11.9 可選的原生 Netflix EurekaClient
- 11.10 為什么注冊服務這么慢
- 11.11 區域
- 12.服務發現:Eureka 服務端
- 12.1 如何引入 Eureka server
- 12.2 如何運行Eureka Server
- 12.3 高可用性和時區,區域
- 12.4 獨立模式
- 12.5 對等意識
- 12.6 什么時候使用ip地址
- 12.7 保護eureka服務
- 13.斷路器:Hystrix客戶端
- 14 斷路器:Hystrix儀表板
- 15. Hystrix 超時和Ribbon 客戶端
- 16 客戶端負載均衡:ribbon
- 17 外部配置:Archaius
- 18. 路由和過濾
- 18.1 如何引入zuul
- 18.2 嵌入式Zuul反向代理
- 18.3 Zuul Http Client
- 18.4 Cookies和敏感標題
- 18.5忽略的標題
- 18.6管理端點
- 18.6.1 路由端點
- 19. Polyglot 支持Sidecar
- 20 重試失敗的請求
- 21 HTTP Client
- IV. Spring Cloud OpenFeign
- V. Spring Cloud Stream
- VI. Binder Implementations
- VII. Spring Cloud Bus
- VIII. Spring Cloud Sleuth
- IX. Spring Cloud Consul
- X. Spring Cloud Zookeeper
- XI. Spring Boot Cloud CLI
- XII. Spring Cloud Security
- XIII. Spring Cloud for Cloud Foundry