前言
架构演变–微服务Spring Cloud
这篇博客介绍了Spring Cloud的由来及什么是Spring Cloud,今天一起看下Spring Cloud有什么. Spring Cloud 主要项目有24个,如下:
主要项目
Spring Cloud Config
由git存储库支持的集中式外部配置管理。配置资源直接映射到Spring Environment但如果需要,可以由非Spring应用程序使用。
Spring Cloud Netflix
与各种Netflix OSS组件集成(Eureka,Hystrix,Zuul,Archaius等)。
Spring Cloud Bus
用于将服务和服务实例与分布式消息传递链接在一起的事件总线.用于在群集中传播状态更改(例如,配置更改事件)。
Spring Cloud Cloudfoundry
将您的应用程序与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 rest客户端和身份验证头中继的支持。
Spring Cloud Sleuth
Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志(例如ELK)的跟踪兼容。
Spring Cloud Data Flow
适用于现代运行时的可组合微服务应用程序的云本机编排服务。易于使用的DSL,拖放式GUI和REST-API共同简化了基于微服务的数据管道的整体编排。
Spring Cloud Stream
轻量级事件驱动的微服务框架,可快速构建可连接到外部系统的应用程序。在Spring Boot应用程序之间使用Apache Kafka或RabbitMQ发送和接收消息的简单声明模型。
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 Task App Starters是Spring Boot应用程序,可能是任何进程,包括不能永久运行的Spring Batch作业,它们在有限的数据处理期后结束/停止。
Spring Cloud Zookeeper
使用Apache Zookeeper进行服务发现和配置管理。
Spring Cloud AWS
易于与托管的Amazon Web服务集成。它提供了一种使用众所周知的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环境以及其他Spring编程模型习惯用法提供Spring Boot应用程序的集成。
Spring Cloud Pipelines
Spring Cloud Pipelines提供了一个固定意见的部署管道,其中包含确保您的应用程序可以零停机方式部署并轻松回滚出错的步骤。
Spring Cloud Function
Spring Cloud Function通过函数促进业务逻辑的实现。它支持无服务器提供商之间的统一编程模型,以及独立运行(本地或PaaS)的能力。
发行系列
Spring Cloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以Spring Cloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。
版本名的来源是伦敦的地铁站名,以字母排序。比如最早的Release版本为Angel,第二个Release版本为Brixton。 当各个项目的点数累积到临界质量时,或者其中一个项目中存在一个需要每个人都可用的关键错误时,那么发布序列将推出名称以“.SRX”结尾的“服务版本”, 其中“X”是一个数字。
Spring Boot | Spring Cloud |
---|---|
1.2.x | Angel |
1.3.x,1.4.x | Brixton |
1.4.x ,1.5.x | Camden |
1.5.x,不兼容2.0.x | Dalston,Edgware |
2.0.x,不兼容1.5.x | Finchley |
2.1.x | Greenwich |
2.2.x | Hoxton |
- 使用依赖项管理工具控制版本。如果您正在使用Maven,请记住,第一个已声明的版本是成功的,因此请按顺序声明BOMs,第一个版本通常是最近的版本(例如,如果您想在Brixton中使用Spring
Boot 1.3.6)。发布,首先放置Boot的BOM)。如果使用Spring dependency
management插件,同样的规则也适用于Gradle。
请注意
- 发布系列包含spring-cloud-dependencies和spring-cloud-starter-parent。可以像使用spring-boot-starter-parent一样使用父类(如果使用Maven)。如果您只需要依赖关系管理,那么“依赖关系”版本是同一件事的仅bom版本(它只包含依赖关系管理,没有插件声明或对Spring或Spring
Boot的直接引用)。如果使用Spring Boot父POM,则可以使用Spring Cloud中的BOM。反之则不然:使用Cloud
parent使得同时使用Boot BOM更改Spring Boot版本及其依赖项变得不可能,或者至少是不可靠的。
小提示: 关于BOM,请查看以下这篇文章 Spring IO Platform:解决依赖版本冲突