(It might make sense to put an "edit this page on GitHub" link somewhere? I actually had to dig a bit to find out where the source of this web page was located.)
373 lines
20 KiB
HTML
373 lines
20 KiB
HTML
---
|
|
# The name of your project
|
|
title: Spring Cloud
|
|
|
|
badges:
|
|
|
|
|
|
# Customize your project's badges. Delete any entries that do not apply.
|
|
custom:
|
|
- name: Source (GitHub)
|
|
url: https://github.com/spring-cloud
|
|
icon: github
|
|
|
|
- name: StackOverflow
|
|
url: http://stackoverflow.com/questions/tagged/spring-cloud
|
|
icon: stackoverflow
|
|
|
|
|
|
---
|
|
<!DOCTYPE HTML>
|
|
<html lang="en-US">
|
|
|
|
|
|
{% capture billboard_description %}
|
|
|
|
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.
|
|
|
|
{% endcapture %}
|
|
|
|
{% capture main_content %}
|
|
|
|
Spring Cloud builds on Spring Boot by providing a bunch of libraries
|
|
that enhance the behaviour of an application when added to the
|
|
classpath. You can take advantage of the basic default behaviour to
|
|
get started really quickly, and then when you need to, you can
|
|
configure or extend to create a custom solution.
|
|
|
|
<span id="quick-start"></span>
|
|
|
|
## Quick Start
|
|
|
|
The release train label (see below) is actually only used explicitly
|
|
in one artifact: "spring-cloud-dependencies" (all the others have
|
|
normal numeric release labels tied to their parent project). The
|
|
dependencies POM is the one you can use as a BOM for dependency
|
|
management. Example using the latest version with the config client
|
|
and eureka (change the artifact ids to pull in other starters):
|
|
|
|
{% include download_widget.md %}
|
|
|
|
## Features
|
|
|
|
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 balancing
|
|
* Circuit Breakers
|
|
* Global locks
|
|
* Leadership election and cluster state
|
|
* Distributed messaging
|
|
|
|
Spring Cloud takes a very declarative approach, and often you get a
|
|
lot of fetaures with just a classpath change and/or an
|
|
annotation. Example application that is a discovery client:
|
|
|
|
```java
|
|
@SpringBootApplication
|
|
@EnableDiscoveryClient
|
|
public class Application {
|
|
public static void main(String[] args) {
|
|
SpringApplication.run(Application.class, args);
|
|
}
|
|
}
|
|
```
|
|
|
|
<a name="main-projects"></a>
|
|
|
|
## Main Projects
|
|
|
|
<!-- Spring Cloud Config -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-config" repo_url="http://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Netflix -->
|
|
{% capture project_description %}
|
|
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-netflix" repo_url="http://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Bus -->
|
|
{% capture project_description %}
|
|
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).
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-bus" repo_url="http://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Cloudfoundry -->
|
|
{% capture project_description %}
|
|
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-cloudfoundry" repo_url="http://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Open Service Broker -->
|
|
{% capture project_description %}
|
|
Provides a starting point for building a service broker that implements the Open Service Broker API.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-open-service-broker/" repo_url="http://github.com/spring-cloud/spring-cloud-open-service-broker" project_title="Spring Cloud Open Service Broker" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Cluster -->
|
|
{% capture project_description %}
|
|
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="/spring-cloud" repo_url="http://github.com/spring-cloud/spring-cloud-cluster" project_title="Spring Cloud Cluster" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Consul -->
|
|
{% capture project_description %}
|
|
Service discovery and configuration management with Hashicorp Consul.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-consul" repo_url="http://github.com/spring-cloud/spring-cloud-consul" project_title="Spring Cloud Consul" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Security -->
|
|
{% capture project_description %}
|
|
Provides support for load-balanced OAuth2 rest client and authentication header relays in a Zuul proxy.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-security" repo_url="http://github.com/spring-cloud/spring-cloud-security" project_title="Spring Cloud Security" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Sleuth -->
|
|
{% capture project_description %}
|
|
Distributed tracing for Spring Cloud applications, compatible with Zipkin, HTrace and log-based (e.g. ELK) tracing.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-sleuth" repo_url="http://github.com/spring-cloud/spring-cloud-sleuth" project_title="Spring Cloud Sleuth" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Data Flow -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-dataflow" repo_url="https://github.com/spring-cloud/spring-cloud-dataflow" project_title="Spring Cloud Data Flow" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Stream -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-stream" repo_url="http://github.com/spring-cloud/spring-cloud-stream" project_title="Spring Cloud Stream" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Stream App Starters -->
|
|
{% capture project_description %}
|
|
Spring Cloud Stream App Starters are Spring Boot based Spring Integration applications that provide integration with external systems.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-stream-app-starters" repo_url="https://github.com/spring-cloud/spring-cloud-stream-app-starters" project_title="Spring Cloud Stream App Starters" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Task -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-task" repo_url="http://github.com/spring-cloud/spring-cloud-task" project_title="Spring Cloud Task" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Task App Starters -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-task-app-starters" repo_url="https://github.com/spring-cloud/spring-cloud-task-app-starters" project_title="Spring Cloud Task App Starters" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Zookeeper -->
|
|
{% capture project_description %}
|
|
Service discovery and configuration management with Apache Zookeeper.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-zookeeper" repo_url="http://github.com/spring-cloud/spring-cloud-zookeeper" project_title="Spring Cloud Zookeeper" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud AWS -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% capture site_url %}
|
|
{{ site.projects_site_url }}/spring-cloud-aws
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url=site_url repo_url="http://github.com/spring-cloud/spring-cloud-aws" project_title="Spring Cloud for Amazon Web Services" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Connectors -->
|
|
{% capture project_description %}
|
|
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").
|
|
{% endcapture %}
|
|
|
|
{% capture site_url %}
|
|
{{ site.projects_site_url }}/spring-cloud-connectors
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url=site_url repo_url="http://github.com/spring-cloud/spring-cloud-connectors" project_title="Spring Cloud Connectors" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Starters -->
|
|
{% capture project_description %}
|
|
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.)
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://github.com/spring-cloud/spring-cloud-starters" repo_url="http://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud CLI -->
|
|
{% capture project_description %}
|
|
Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://github.com/spring-cloud/spring-cloud-cli" repo_url="http://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Contract -->
|
|
{% capture project_description %}
|
|
Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer Driven Contracts approach.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-contract" repo_url="http://github.com/spring-cloud/spring-cloud-contract" project_title="Spring Cloud Contract" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Gateway -->
|
|
{% capture project_description %}
|
|
Spring Cloud Gateway is an intelligent and programmable router based on Project Reactor.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-gateway" repo_url="http://github.com/spring-cloud/spring-cloud-gateway" project_title="Spring Cloud Gateway" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud OpenFeign -->
|
|
{% capture project_description %}
|
|
Spring Cloud OpenFeign provides integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-openfeign" repo_url="http://github.com/spring-cloud/spring-cloud-openfeign" project_title="Spring Cloud OpenFeign" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Pipelines -->
|
|
{% capture project_description %}
|
|
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.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-pipelines" repo_url="http://github.com/spring-cloud/spring-cloud-pipelines" project_title="Spring Cloud Pipelines" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Function -->
|
|
{% capture project_description %}
|
|
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).
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-function" repo_url="http://github.com/spring-cloud/spring-cloud-function" project_title="Spring Cloud Function" project_description=project_description %}
|
|
|
|
## Release Trains
|
|
|
|
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.
|
|
|
|
Release train contents:
|
|
|
|
|Component | Edgware.SR4 | Finchley.SR1 | Finchley.BUILD-SNAPSHOT|
|
|
|--------------------------------------|-----------------|---------------------|------------------------|
|
|
|spring-cloud-aws | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-bus | 1.3.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-commons | 1.3.4.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-contract | 1.2.5.RELEASE | 2.0.1.RELEASE | 2.0.2.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 |
|
|
|spring-cloud-security | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-cloudfoundry | 1.1.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-consul | 1.3.4.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-sleuth | 1.3.4.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-stream | Ditmars.SR4 | Elmhurst.SR1 | Elmhurst.BUILD-SNAPSHOT|
|
|
|spring-cloud-zookeeper | 1.2.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-boot | 1.5.14.RELEASE | 2.0.4.RELEASE | 2.0.4.BUILD-SNAPSHOT |
|
|
|spring-cloud-task | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-vault | 1.1.1.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-gateway | 1.0.2.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-openfeign | | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-function | 1.0.0.RELEASE | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
|
|
|
|
Finchley builds and works with Spring Boot 2.0.x, and is not expected
|
|
to work with Spring Boot 1.5.x.
|
|
|
|
Note: The Dalston release train will [reach end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available) in December 2018. Edgware will follow the end-of-life cycle of 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.
|
|
|
|
NOTE: The Camden release train was [marked end-of-life](https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available).
|
|
|
|
The Camden release train builds on Spring Boot 1.4.x, but is also
|
|
tested with 1.5.x.
|
|
|
|
NOTE: The Brixton and Angel release trains were [marked end-of-life](https://spring.io/blog/2017/07/21/spring-cloud-dalston-sr2-is-available-now#end-of-life-for-angel-and-brixton-release-trains)
|
|
(EOL) in July 2017.
|
|
|
|
The Brixton release train builds on Spring Boot 1.3.x, but is also
|
|
tested with 1.4.x.
|
|
|
|
The Angel release train builds on Spring Boot 1.2.x, and is
|
|
incompatible in some areas with Spring Boot 1.3.x. Brixton builds on
|
|
Spring Boot 1.3.x and is similarly incompatible with 1.2.x. Some
|
|
libraries and most apps built on Angel will run fine on Brixton, but
|
|
changes will be required anywhere that the OAuth2 features from
|
|
spring-cloud-security 1.0.x are used (they were mostly moved to Spring
|
|
Boot in 1.3.0).
|
|
|
|
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.
|
|
|
|
> 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.
|
|
|
|
> NOTE: If you find anything wrong or outdated on this page, please open an issue in [this](https://github.com/spring-projects/spring-cloud) repo.
|
|
|
|
{% endcapture %}
|
|
|
|
{% capture related_resources %}
|
|
|
|
### Sample Projects
|
|
|
|
* [Config Server](https://github.com/spring-cloud-samples/configserver)
|
|
* [Service Registry](https://github.com/spring-cloud-samples/eureka)
|
|
* [Circuit Breaker Dashboard](https://github.com/spring-cloud-samples/hystrix-dashboard)
|
|
* [Business Application](https://github.com/spring-cloud-samples/customers-stores) (Customers and Stores)
|
|
* [OAuth2 Authorization Server](https://github.com/spring-cloud-samples/authserver)
|
|
* [OAuth2 SSO Client](https://github.com/spring-cloud-samples/sso)
|
|
* [Integration Test Samples](https://github.com/spring-cloud-samples/tests)
|
|
* [Spring Cloud Contract Samples](https://github.com/spring-cloud-samples/spring-cloud-contract-samples)
|
|
|
|
{% endcapture %}
|
|
|
|
{% include project_page.html %}
|
|
</html>
|