1. Spring Cloud 引言
首先我们打开spring 的官网:https://spring.io/
我们会看到这样一张图片
这个图片告诉我们,开发我们的应用程序就像盖楼一样,
首先我们需要搭建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
- Config 配置
- Registry 注册
- Breakers 断路器
- Load Balancing 负载均衡
- Routing 路由
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 主要的项目
由git存储库支持的集中式外部配置管理。 配置资源直接映射到Spring`Environment`,但如果需要可以由非Spring应用程序使用。
与各种Netflix OSS组件(Eureka,Hystrix,Zuul,Archaius等)集成。
用于将服务和服务实例与分布式消息一起链接的事件总线。 用于跨群集传播状态更改(例如配置更改事件)。
将您的应用程序与Pivotal Cloud Foundry集成。 提供服务发现实现,还可以轻松实现受SSO和OAuth2保护的资源。
为构建实现Open Service Broker API的服务代理提供了一个起点。
领导选举和常见的有状态模式,为Zookeeper,Redis,Hazelcast,Consul提供和实施。
与Hashicorp Consul进行服务发现和配置管理。
为Zuul代理中的负载均衡OAuth2休息客户端和身份验证报头中继提供支持。
Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志的(例如ELK)跟踪兼容。
现代运行时组合式微服务应用程序的云本地编排服务。 易于使用的DSL,拖放式GUI和REST-API一起简化了基于微服务的数据管道的整体编排。
轻量级事件驱动的微服务框架,可快速构建可连接到外部系统的应用程序。 使用Apache Kafka或RabbitMQ在Spring Boot应用程序之间发送和接收消息的简单声明模型。
Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration应用程序,可与外部系统集成。
一个短命的微服务框架,用于快速构建执行有限数据处理的应用程序。 向Spring Boot应用程序添加功能性和非功能性功能的简单声明。
Spring Cloud任务应用程序启动器是Spring Boot应用程序,可能是任何进程,包括不能永久运行的Spring Batch作业,并且会在有限的数据处理期结束/停止。
使用Apache Zookeeper进行服务发现和配置管理。
与托管的Amazon Web Services轻松集成。 它提供了一种使用众所周知的Spring成语和API(如消息传递或缓存API)与AWS提供的服务进行交互的便捷方式。
开发人员可以围绕托管服务构建应用程序,而无需关心基础架构或维护。
让各种平台上的PaaS应用程序轻松连接到后端服务,如数据库和消息代理(该项目以前称为“Spring Cloud”)。
Spring Boot式初学者项目,可以减轻Spring Cloud消费者的依赖性管理。 (作为一个项目终止并与Angel.SR2之后的其他项目合并。)
Spring Boot CLI插件,用于在Groovy中快速创建Spring Cloud组件应用程序
Spring Cloud Contract是一个涵盖各种解决方案的综合项目,可帮助用户成功实施消费者驱动合同方法。
Spring Cloud Gateway是基于Project Reactor的智能可编程路由器。
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
Spring Cloud 概述的更多相关文章
-
微服务与Spring Cloud概述
微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...
-
0000 - Spring Cloud 概述
1.概述 Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性简化了分布式系统的开发,比如服务发现.服务网关.服务路由.链路追踪等.Spring Cloud并不重复 ...
-
0x01 Spring Cloud 概述
Spring Cloud Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分 ...
-
Spring Cloud概述
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
-
Dubbo 与 Spring Cloud 完美结合
Dubbo 与 Spring Cloud 完美结合 1. 概述 可能说起来Dubbo,很多人都不陌生,这毕竟是一款从2012年就开始开源的Java RPC框架,中间由于各种各样的原因停止更新4年半的时 ...
-
spring cloud详解
1.Spring boot与Spring cloud 之间的关系 Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务 Spring ...
-
Spring Cloud微服务学习笔记
Spring Cloud微服务学习笔记 SOA->Dubbo 微服务架构->Spring Cloud提供了一个一站式的微服务解决方案 第一部分 微服务架构 1 互联网应用架构发展 那些迫使 ...
-
Spring Cloud与Docker——微服务架构概述
Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...
-
Spring Cloud Alibaba(2)---Nacos概述
Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...
随机推荐
-
【云计算】Cloudify-基于TOSCA规范的开源云应用编排系统
.cloudify-manager-blueprints:https://github.com/cloudify-cosmo/cloudify-manager-blueprints/tree/3. ...
-
1,SFDC 管理员篇 - 基本设置
1, 公司配置 Setup | Administrator| Company Profile *Company Inforamtion:公司基础信息,License信息,重要的设置包括本地时间,币种, ...
-
python: html 笔记2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
-
LeetCode Implement Stack using Queues (数据结构)
题意: 用队列来实现栈. 思路: 没有什么捷径,纯粹模拟.但是用一个队列就够了. class Stack { /* // Push element x onto stack. void push(in ...
-
【转】linux(Ubuntu)配置svn仓库,搭建svn服务器
原文网址:http://blog.1v2d.com/322.html 在家里搞了好久,终于搞出来,并且在线上已经成功搭建成功,在这感谢一个博主的文章,本篇文章也主要是转载他的内容,写的非常好,而且非常 ...
-
在数组中找几个数的和等于某个数[LeetCode]
首先明确一点,这个方面的问题设计到的知识点是数组的查找的问题.对于类似的这样的查找操作的具体办法就是三种解决方法: 1.暴力算法,多个for循环,很高的时间复杂度 2.先排序,然后左右夹逼,但是这样会 ...
-
java 类型转换(摘自网络)
java基本类型转换规则 1.基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换. 转换在编译器执行,而不是等到运行期再执行. 2.基本数据类型 ...
-
--save 和 --save-dev的区别
--save是对生产环境所需依赖的声明(开发应用中使用的框架,库,比如jquery,bootstrap等) --save-dev是对开发环境所需依赖的声明(构建工具,测试工具,比如babel,gulp ...
-
一款可视化的在线制作H5
一款可视化的在线制作H5 官方网站: http://www.iii66.cn 制作H5网址: http://www.iii66.cn/love/page/index 包括对图片,文字,图形,视频,声音 ...
-
【转】 ISP-黑电平校正(BLC)
转自:https://blog.csdn.net/xiaoyouck/article/details/72824534 介绍黑电平(Black Level Correction)也就是黑色的最低点,以 ...