Spring Cloud 概述

1. Spring Cloud 引言

首先咱們打開spring 的官網:https://spring.io/git

咱們會看到這樣一張圖片github

這個圖片告訴咱們,開發咱們的應用程序就像蓋樓同樣,spring

首先咱們須要搭建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 

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 主要的項目

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休息客戶端和身份驗證報頭中繼提供支持。

Spring Cloud Sleuth

Spring Cloud應用程序的分佈式跟蹤,與Zipkin,HTrace和基於日誌的(例如ELK)跟蹤兼容。

Spring Cloud Data Flow

現代運行時組合式微服務應用程序的雲本地編排服務。 易於使用的DSL,拖放式GUI和REST-API一塊兒簡化了基於微服務的數據管道的總體編排。

Spring Cloud Stream

輕量級事件驅動的微服務框架,可快速構建可鏈接到外部系統的應用程序。 使用Apache Kafka或RabbitMQ在Spring Boot應用程序之間發送和接收消息的簡單聲明模型。

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任務應用程序啓動器是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 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的版本及其依賴關係。

Sample Projects

相關文章
相關標籤/搜索