307 lines
15 KiB
HTML
307 lines
15 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
|
|
depednencies 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 Cloudfoundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources, and also to create a Cloudfoundry service broker.
|
|
{% 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 Cloud Foundry Service Broker -->
|
|
{% capture project_description %}
|
|
Provides a starting point for building a service broker that manages a Cloud Foundry managed service.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-cloudfoundry-service-broker/" repo_url="http://github.com/spring-cloud/spring-cloud-cloudfoundry-service-broker" project_title="Spring Cloud Cloud Foundry 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 programming and operating model for composable data microservices on a structured platform.
|
|
{% 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 %}
|
|
Messaging microservices with Redis, Rabbit or Kafka. Simple declarative model to send and receive messages in a Spring Cloud app.
|
|
{% 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 Modules -->
|
|
{% capture project_description %}
|
|
Spring Cloud Stream Modules can be used with Spring Cloud Stream to create, build, and scale message-driven data microservices.
|
|
{% endcapture %}
|
|
|
|
{% include project_block.md site_url="http://cloud.spring.io/spring-cloud-stream-modules" repo_url="https://github.com/spring-cloud/spring-cloud-stream-modules" project_title="Spring Cloud Stream Modules" project_description=project_description %}
|
|
|
|
<!-- Spring Cloud Task -->
|
|
{% capture project_description %}
|
|
Short lived microservices. 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 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 %}
|
|
|
|
## Release Trains
|
|
|
|
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different
|
|
release cadences. To manage the protfolio 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|Angel.SR6 | Brixton.SR1 | Brixton.BUILD-SNAPSHOT |
|
|
|---------|----------------------------|---------------|------------------------|
|
|
|spring-cloud-aws | 1.0.4.RELEASE | 1.1.0.RELEASE | 1.1.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-bus | 1.0.3.RELEASE | 1.1.0.RELEASE | 1.1.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-cli | 1.0.6.RELEASE | 1.1.1.RELEASE | 1.1.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-commons | 1.0.5.RELEASE | 1.1.1.RELEASE | 1.1.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-config | 1.0.4.RELEASE | 1.1.1.RELEASE | 1.1.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-netflix | 1.0.7.RELEASE | 1.1.2.RELEASE | 1.1.3.BUILD-SNAPSHOT |
|
|
|spring-cloud-security | 1.0.3.RELEASE | 1.1.0.RELEASE | 1.1.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-starters | 1.0.6.RELEASE | | |
|
|
|spring-cloud-cloudfoundry | | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-cluster | | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
|
|
|spring-cloud-consul | | 1.0.1.RELEASE | 1.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-sleuth | | 1.0.1.RELEASE | 1.0.2.BUILD-SNAPSHOT |
|
|
|spring-cloud-stream | | 1.0.2.RELEASE | 1.0.3.BUILD-SNAPSHOT |
|
|
|spring-cloud-zookeeper | | 1.0.1.RELEASE | 1.0.2.BUILD-SNAPSHOT |
|
|
|spring-boot | 1.2.8.RELEASE| 1.3.5.RELEASE | 1.3.5.RELEASE |
|
|
|spring-cloud-stream-app-starters* | | | 1.0.0.BUILD-SNAPSHOT |
|
|
|spring-cloud-task* | | | 1.0.0.BUILD-SNAPSHOT |
|
|
|
|
(*) These projects are not yet part of Brixton but they will be when they are released
|
|
|
|
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: starting after Brixton.M4 the release train contains a
|
|
> `spring-cloud-starter-dependencies` as well as the
|
|
> `spring-cloud-starter-parent`. 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.
|
|
|
|
{% 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)
|
|
|
|
{% endcapture %}
|
|
|
|
{% include project_page.html %}
|
|
</html>
|