本篇文章翻译自官方文档,地址为https://spring.io/projects/spring-cloud#overview,有些具体内容可以到官方文档查看
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、熔断机制、智能路由、微代理、控制总线、一次性令牌、全局锁、leadership 选举、分布式sessions、群集状态)。分布式系统的协调导致了样板式的模式,开发人员使用SpringCloud可以快速地实现支持这些模式的服务和应用程序。它们将在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和云管理平台等。需要注意的是Spring Cloud并不是一个全新的轮子,而是在已有的轮子的基础上使用Spring Boot进行封装,方便了微服务的快速开发,比如Spring Cloud NetFlix和Spring Cloud AliBaba。
Spring Cloud特征:
SpringCloud致力于为典型用例和覆盖其他用例的可扩展性机制,提供良好的开箱即用的体验,他有以下特征:分布式或者版本化配置;服务注册与发现;路由;服务间调用;负载均衡;熔断机制;全局锁;Leadership选举和集群状态;分布式消息等。Spring Cloud采用了一种非常声明性的方法,通常您只需要更改classpath或注解就可以获得很多特性。作为发现客户机的示例应用程序:
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Spring Cloud 的主要项目:
Spring Cloud Netflix:与各种Netflix OSS组件(Eureka、Hystrix、Zuul、Archaius等)集成。
Spring Cloud Config:由Git存储库支持的集中式外部配置管理。配置资源直接映射到Spring环境,但如果需要,可以由非Spring应用程序使用。
Spring Cloud Bus:用于将服务和服务实例与分布式消息传递链接在一起的事件总线。用于在集群中传播状态更改(例如配置更改事件)。
Spring Cloud Cloudfoundry:将应用程序与Pivotal Cloud Foundry集成。提供服务发现实现,并使实现受SSO和OAuth2保护的资源变得容易。
Spring Cloud Open Service Broker:为构建实现Open Service Broker API的service broker提供一个开始
Spring Cloud Cluster:对ZooKeeper、Redis、Hazelcast、Consul进行抽象和实现中的Leadership 选举和常用状态模式。
Spring Cloud Consul:使用Hashicorp Consul进行服务发现和配置管理。
Spring Cloud Security:在 Zuul代理中,提供对负载平衡的OAuth2 REST客户端和身份验证头中继的支持。
Spring Cloud Sleuth:针对SpringCloud应用程序的分布式跟踪,兼容Zipkin、HTrace和基于日志的(如Elk)跟踪。
Spring Cloud Data Flow:一种用于现代运行时可组合微服务应用程序的cloud-native业务流程服务 。易于使用的DSL、拖放式GUI和RESTAPI一起简化了基于数据管道的微服务的总体流程。
Spring Cloud Stream:一个轻量级的基于事件驱动微服务框架,用于快速构建可连接到外部系统的应用程序。在Spring Boot应用程序之间使用Apache Kafka或Rabbitmq发送和接收消息的简单声明性模型。
Spring Cloud Stream App Starters:Spring Cloud Stream App Starters基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。
Spring Cloud Task:一个较短生命周期的微服务框架,用于快速构建执行有限数量数据处理的应用程序。用于向Spring Boot应用程序添加功能性和非功能性功能的简单声明性。
Spring Cloud Task App Starters:Spring Cloud Task App Starters是一个应用程序,它可以是任何进程,包括不会永久运行的Spring批处理作业,并且在有限的数据处理周期后结束/停止。
Spring Cloud Zookeeper:使用Apache ZooKeeper进行服务发现和配置管理。
Spring Cloud AWS:与托管的Amazon Web服务轻松集成。它提供了一种使用众所周知的Spring习惯用法和API(如消息传递或缓存API)能很便利的与AWS提供的服务进行交互。开发人员可以围绕托管服务构建自己的应用程序,而不必关心基础设施或维护。
Spring Cloud Connectors:使各种平台中的PaaS应用程序很容易连接到后端服务,如数据库和消息代理(该项目以前称为“Spring Cloud”)。
Spring Cloud Starters:SpringBoot风格的入门项目,以简化Spring Cloud消费者的依赖管理。(作为一个中止项目,在Angel.sr2之后与其他项目合并。)
Spring Cloud CLI:用于在groovy中快速创建Spring Cloud组件应用的Springboot cli插件
Spring Cloud Contract:SpringCloudContract是一个一揽子项目,它拥有帮助用户成功实施Consumer Driven Contracts方法的解决方案。
Spring Cloud Gateway:Spring Cloud Gateway是一种基于React项目的智能可编程路由器。
Spring Cloud OpenFeign:SpringCloudOpenFeign通过自动配置,绑定到Spring Environment 和其他Spring编程模型习惯,为Spring Boot应用程序提供集成。
Spring Cloud Pipelines:Spring Cloud Pipelines提供了一个有步骤的固定部署管道,以确保您的应用程序可以以零宕机的方式部署,并且很容易回滚出错的内容。
Spring Cloud Function:SpringCloudFunction通过方法来促进业务逻辑的实现。它支持跨serverless提供程序的统一编程模型,以及独立运行(本地或在PaaS中)的能力。
版本发布:
SpringCloud是一个由独立项目组成的综合项目,由子项目维护这自己的版本号,原则上具有不同的发布周期。为了管理已经发版的这些独立子项目,Spring Cloud项目使用名称而不是版本号,为了避免与子项目混淆。单个Spring Cloud项目都会有一份项目依赖的清单(见下文)。发布的版本有名称,而没有版本号,以避免与子项目混淆。它的名字是按字母顺序排列的(所以你可以按时间顺序排列)(“Angel”是第一个版本,“Brixton”是第二个版本)。当单个项目的点发布累积到临发布状态时,或者如果其中一个项目中存在每个人都能遇到的关键错误,版本发布将推出名称以“.srx”结尾的“service releases”,其中“x”是一个数字。如下表Spring Cloud使用的Spring版本,Spring Cloud发布版本的内容可以参考官网:https://spring.io/projects/spring-cloud#overview
Spring Cloud发行版本 | Spring Boot 版本 |
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
Finchley与SpringBoot2.0.x一起构建运行,不建议与Spring Boot 1.5.x一起运行。Dalston版本在2018年12月封版。Edgware跟随Spring Boot 1.5.x的生命周期,Dalston and Edgware是在Spring Boot 1.5.x版本上构建的,可能不能在Spring Boot 2.0.x上运行。
注意:Camden 也已经封版,Camden 版本在Spring Boot 1.4.x上构建,但可以在Spring Boot 1.5.x上测试。Brixton 和Angel版本在2017年6月封版,Brixton版本在Spring Boot 1.2.x上构建,但可以使用Spring Boot 1.4.x测试。
Angel版本在Spring 1.2.x上构建,在某些功能与Spring Boot 1.3.x不兼容。Brixton在Spring Boot在Spring1.3.x上构建,与1.2.x不兼容。一些库和大多数基于Angel的应用程序在Brixton上运行良好,但在使用Spring Cloud Security 1.0.x的OAuth2功能的地方都需要进行更改。它们大多功能在1.3.0中移动到Spring Boot)