Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.git
Spring Cloud爲開發人員提供了快速構建分佈式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智能路由,微服務代理,控制總線,一次性令牌,全局鎖定,領導選舉,分佈式 session會話,集羣狀態)。 分佈式系統的協調致使斷路器模式,使用Spring Cloud開發人員能夠快速站起來實現這些模式的服務和應用程序。 它們適用於任何分佈式環境,包括開發人員本身的筆記本電腦,裸機數據中心和Cloud Foundry等託管平臺。spring
Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others.數據庫
Distributed/versioned configuration編程
Service registration and discovery後端
Routing緩存
Service-to-service calls服務器
Load balancingsession
Circuit Breakersapp
Global locks負載均衡
Leadership election and cluster state
Distributed messaging
Spring Cloud專一於爲典型用例提供良好的開箱即用體驗,併爲其餘用戶提供可擴展性機制。
- 分佈式/版本化配置
- 服務註冊和發現
- 路由
- 服務到服務調用
- 負載均衡
- 斷路器
- 全局鎖
- 領導選舉和集羣狀態
- 分佈式消息
Spring Cloud takes a very declarative approach, and often you get a lot of features with just a classpath change and/or an annotation. Example application that is a discovery client:
Spring Cloud採用很是聲明的方法,一般只需更改類路徑和/或註解便可得到許多功能。 做爲發現客戶端的示例應用程序:
@SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Centralized external configuration management backed by a git repository. The configuration resources map directly to Spring Environment
but could be used by non-Spring applications if desired.
由git存儲庫支持的集中式外部配置管理。 配置資源直接映射到Spring Environment,但若是須要,能夠由非Spring應用程序使用。
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
與各類Netflix OSS組件集成(Eureka,Hystrix,Zuul,Archaius等)。
An event bus for linking services and service instances together with distributed messaging. Useful for propagating state changes across a cluster (e.g. config change events).
用於將服務和服務實例與分佈式消息傳遞連接在一塊兒的事件總線 用於在羣集中傳播狀態更改(例如,配置更改事件)。
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources.
將您的應用程序與Pivotal Cloud Foundry集成。 提供服務發現實現,還能夠輕鬆實現受SSO和OAuth2保護的資源。
Provides a starting point for building a service broker that implements the Open Service Broker API.
提供構建實現Open Service Broker API的服務代理的起點。
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul.
領導者選舉和共同的有狀態模式與Zookeeper,Redis,Hazelcast,Consul的抽象和實現。
Service discovery and configuration management with Hashicorp Consul
Hashicorp Consul的服務發現和配置管理。
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
爲Zuul代理中的負載平衡OAuth2 rest客戶端和身份驗證頭中繼提供支持。
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
Spring Cloud應用程序的分佈式跟蹤,與Zipkin,HTrace和基於日誌(例如ELK)的跟蹤兼容。
A cloud-native orchestration service for composable microservice applications on modern runtimes. Easy-to-use DSL, drag-and-drop GUI, and REST-APIs together simplifies the overall orchestration of microservice based data pipelines.
適用於現代運行時的可組合微服務應用程序的雲本機編排服務。 易於使用的DSL,拖放式GUI和REST-API共同簡化了基於微服務的數據管道的總體編排。
A lightweight event-driven microservices framework to quickly build applications that can connect to external systems. Simple declarative model to send and receive messages using Apache Kafka or RabbitMQ between Spring Boot apps.
輕量級事件驅動的微服務框架,可快速構建可鏈接到外部系統的應用程序。 在Spring Boot應用程序之間使用Apache Kafka或RabbitMQ發送和接收消息的簡單聲明模型。
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with external systems.
Spring Cloud Stream App Starters是基於Spring Boot的Spring Integration應用程序,可提供與外部系統的集成。
A short-lived microservices framework to quickly build applications that perform finite amounts of data processing. Simple declarative for adding both functional and non-functional features to Spring Boot apps.
一種短命的微服務框架,用於快速構建執行有限數據處理的應用程序。 用於向Spring Boot應用程序添加功能和非功能功能的簡單聲明。
Spring Cloud Task App Starters are Spring Boot applications that may be any process including Spring Batch jobs that do not run forever, and they end/stop after a finite period of data processing.
Spring Cloud Task App Starters是Spring Boot應用程序,多是任何進程,包括不能永久運行的Spring Batch做業,它們在有限的數據處理期後結束/中止。
Service discovery and configuration management with Apache Zookeeper.
使用Apache Zookeeper進行服務發現和配置管理。
Easy integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.
與託管的Amazon Web Services輕鬆集成。 它提供了一種使用衆所周知的Spring習語和API(如消息傳遞或緩存API)與AWS提供的服務進行交互的便捷方式。 開發人員能夠圍繞託管服務構建應用程序,而無需關心基礎結構或維護。
Makes it easy for PaaS applications in a variety of platforms to connect to backend services like databases and message brokers (the project formerly known as "Spring Cloud").
使各類平臺中的PaaS應用程序能夠輕鬆鏈接到數據庫和消息代理(該項目之前稱爲「Spring Cloud」)等後端服務。
Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. (Discontinued as a project and merged with the other projects after Angel.SR2.)
Spring Boot風格的入門項目,能夠簡化Spring Cloud用戶的依賴管理。 (做爲項目中止並在Angel.SR2以後與其餘項目合併。)
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
Spring Boot CLI插件,用於在Groovy中快速建立Spring Cloud組件應用程序
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer Driven Contracts approach.
Spring Cloud Contract是一個整體項目,其中包含幫助用戶成功實施消費者驅動合同方法的解決方案。
Spring Cloud Gateway is an intelligent and programmable router based on Project Reactor.
Spring Cloud Gateway是一款基於Project Reactor的智能可編程路由器。
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms.
Spring Cloud OpenFeign經過自動配置和Spring環境以及其餘Spring編程模型習慣用法提供Spring Boot應用程序的集成。
Spring Cloud Pipelines provides an opinionated deployment pipeline with steps to ensure that your application can be deployed in zero downtime fashion and easilly rolled back of something goes wrong.
Spring Cloud Pipelines提供了一個固定意見的部署管道,其中包含確保您的應用程序能夠零停機方式部署並輕鬆回滾出錯的步驟。
Spring Cloud Function promotes the implementation of business logic via functions. It supports a uniform programming model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
Spring Cloud Function經過函數促進業務邏輯的實現。 它支持無服務器提供商之間的統一編程模型,以及獨立運行(本地或PaaS)的能力。
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project (see below). The release trains have names, not versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so you can sort them chronologically) with names of London Tube stations ("Angel" is the first release, "Brixton" is the second). When point releases of the individual projects accumulate to a critical mass, or if there is a critical bug in one of them that needs to be available to everyone, the release train will push out "service releases" with names ending ".SRX", where "X" is a number.
Spring Cloud是一個由獨立項目組成的整體項目,原則上具備不一樣的發佈節奏。 爲了管理投資組合,發佈了BOM(物料清單),其中包含一組針對單個項目的依賴關係(見下文)。 發佈列車有名稱而不是版本,以免與子項目混淆。 名稱是字母序列(所以您能夠按時間順序對它們進行排序)使用倫敦地鐵站的名稱(「天使」是第一個版本,「布里克斯頓」是第二個版本)。 當各個項目的點數累積到臨界質量時,或者其中一個項目中存在一個須要每一個人均可用的關鍵錯誤時,發佈序列將推出名稱結尾爲「.SRX」的「服務版本」, 其中「X」是一個數字。
Spring Cloud Version | Spring Boot Version |
Hoxton | 2.2.x |
Greenwich | 2.1x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
Greenwich builds and works with Spring Boot 2.1.x, and is not expected to work with Spring Boot 1.5.x.
Greenwich構建並與Spring Boot 2.1.x一塊兒使用,預計不適用於Spring Boot 1.5.x.
Note: The Dalston release train will reach end-of-life in December 2018. Edgware will follow the end-of-life cycle of Spring Boot 1.5.x.
注意:Dalston發佈列車將於2018年12月達到使用壽命.Edgware將遵循Spring Boot 1.5.x的生命週期結束週期。
The Dalston and Edgware release trains build on Spring Boot 1.5.x, and are not expected to work with Spring Boot 2.0.x.
Dalston和Edgware發佈版基於Spring Boot 1.5.x構建,預計不會與Spring Boot 2.0.x一塊兒使用。
Use your dependency management tools to control the version. If you are using Maven remember that the first version declared wins, so declare the BOMs in order, with the first one usually being the most recent (e.g. if you want to use Spring Boot 1.3.6 with Brixton.RELEASE, put the Boot BOM first). The same rule applies to Gradle if you use the Spring dependency management plugin.
使用依賴關係管理工具來控制版本。 若是您正在使用Maven,請記住聲明的第一個版本獲勝,所以按順序聲明BOM,第一個一般是最新版本(例如,若是您想使用帶有Brixton.RELEASE的Spring Boot 1.3.6,請使用引導BOM 第一)。 若是您使用Spring依賴關係管理插件,則一樣的規則適用於Gradle。
Note
The release train contains a spring-cloud-dependencies as well as the spring-cloud-starter-parent. You can use the parent as you would the spring-boot-starter-parent (if you are using Maven). If you only need dependency management, the "dependencies" version is a BOM-only version of the same thing (it just contains dependency management and no plugin declarations or direct references to Spring or Spring Boot). If you are using the Spring Boot parent POM, then you can use the BOM from Spring Cloud. The opposite is not true: using the Cloud parent makes it impossible, or at least unreliable, to also use the Boot BOM to change the version of Spring Boot and its dependencies.注意版本系列包含spring-cloud-dependencies以及spring-cloud-starter-parent。 您能夠像使用spring-boot-starter-parent同樣使用父級(若是您使用的是Maven)。 若是您只須要依賴關係管理,那麼「依賴關係」版本是同一事物的僅限BOM的版本(它只包含依賴關係管理,沒有插件聲明或直接引用Spring或Spring Boot)。 若是您使用的是Spring Boot父POM,則可使用Spring Cloud中的BOM。 相反的狀況並不是如此:使用Cloud父級使得使用Boot BOM來更改Spring Boot及其依賴項的版本是不可能的,或者至少是不可靠的。