目录
Spring Cloud for Cloud Foundry
Spring Cloud Open Service Broker(替代了Spring Cloud - Cloud Foundry Service Broker)
Spring Cloud Cluster(此项目现在已被Spring Integration中的代码取代)
Spring Cloud Consul(用来取代Netflix中的Eureka)
Spring Cloud Stream App Starters
Spring Cloud - Cloud Foundry Service Broker(被替代)
Spring Cloud Task App Starters
Spring Cloud for Amazon Web Services
详细介绍
Spring Cloud Netflix
- 介绍
Spring Cloud Netflix通过自动配置和Spring环境以及其他Spring编程模型习惯用法为Spring Boot应用程序提供Netflix OSS集成。通过一些简单的注释,您可以快速启用和配置应用程序内的常见模式,并使用经过实战考验的Netflix组件构建大型分布式系统。提供的模式包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。 - 特征
1、服务发现:可以注册Eureka实例,客户端可以使用Spring管理的bean发现实例
2、服务发现:可以使用声明性Java配置创建嵌入式Eureka服务器
3、断路器:Hystrix客户端可以使用简单的注释驱动方法装饰器构建
4、断路器:带有声明性Java配置的嵌入式Hystrix仪表板
5、声明性REST客户端:Feign创建使用JAX-RS或Spring MVC注释修饰的接口的动态实现
6、客户端负载均衡器:功能区
7、外部配置:从Spring Environment到Archaius的桥接(使用Spring Boot约定启用Netflix组件的本机配置)
8、路由器和过滤器:Zuul过滤器的自动注册,以及反向代理创建的配置方法的简单约定 - 包含以下模块
1、Eureka(服务发现):服务发现是基于微服务架构的关键原则之一。 尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Netflix服务发现服务器和客户端是Eureka。可以将服务器配置和部署为高可用性,每个服务器将注册服务的状态复制到其他服务器。
2、Hystrix(熔断):Netflix的创造了一个调用的库Hystrix实现了断路器图案。在微服务架构中,通常有多层服务调用。
3、Zuul(路由器和过滤器):路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,/api/shop映射到商店服务。 Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。
4、Ribbon(客户端负载均衡器):Ribbon是一个客户端负载平衡器,它可以很好地控制HTTP和TCP客户端的行为。
Feign已经使用Ribbon,所以如果你使用@FeignClient,那么这一节也适用。
5、Archaius(服客户端负载均衡器):Netflix客户端配置库是Archaius。它是所有Netflix OSS组件用于配置的库。
Archaius是Apache Commons配置项目的扩展。它允许通过轮询源进行更改或将源更改推送到客户端来进行配置更新。
Archaius使用Dynamic <Type> Property类作为属性的句柄。
Spring Cloud Config
- 介绍
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。
客户端和服务器上的概念映射与SpringEnvironment
和PropertySource
抽象,因此它们非常适合Spring应用程序,但可以与任何语言运行的任何应用程序一起使用。
当应用程序通过部署管道从开发到测试并进入生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。服务器存储后端的默认实现使用git,因此它可以轻松支持配置环境的标记版本,以及可用于管理内容的各种工具。添加替代实现并使用Spring配置插入它们很容易。 - 特征
1、用于外部配置的HTTP,基于资源的API(名称 - 值对或等效的YAML内容)
2、加密和解密属性值(对称或非对称)
3、使用可轻松嵌入Spring Boot应用程序@EnableConfigServer
4、绑定到Config Server并Environment
使用远程属性源初始化Spring
5、加密和解密属性值(对称或非对称)
Spring Cloud Bus
- 介绍
Spring Cloud Bus使用轻量级消息代理链接分布式系统的节点。
然后,这可以用于广播状态改变(例如,配置改变)或其他管理指令。
目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(以及一些更多取决于传输)是其他传输的路线图。 - 特征
Spring Cloud for Cloud Foundry
- 介绍
Spring Cloud for Cloudfoundry可以轻松地在Cloud Foundry(平台即服务)中运行Spring Cloud应用程序。Cloud Foundry具有“服务”的概念,即“绑定”到应用程序的middlware,实质上为其提供包含凭据的环境变量(例如,用于服务的位置和用户名)。 - 特征
1、该spring-cloud-cloudfoundry-web
项目为Cloud Foundry中的Webapps的一些增强功能提供基本支持:自动绑定到单点登录服务,并可选择为发现启用粘性路由。
2、该spring-cloud-cloudfoundry-discovery
项目提供了Spring Cloud Commons的实现,DiscoveryClient
因此您可以@EnableDiscoveryClient
提供您的凭据spring.cloud.cloudfoundry.discovery.[email,password]
,然后您可以DiscoveryClient
直接使用或通过LoadBalancerClient
(*.url
如果您没有连接到Pivotal Web服务)。
Spring Cloud Open Service Broker(替代了Spring Cloud - Cloud Foundry Service Broker)
- 介绍
Spring Cloud Open Service Broker是一个用于构建实现Open Service Broker API的Spring Boot应用程序的框架。
在开放的Service Broker API项目允许开发者云本地平台如Cloud Foundry的,Kubernetes和OpenShift内运行的应用程序提供服务。
Spring Cloud Open Service Broker提供了一个基于Spring Boot的框架,使您能够在支持Open Service Broker API的平台上为您自己的托管服务快速创建服务代理。 - 特征
Spring Cloud Cluster(此项目现在已被Spring Integration中的代码取代)
- 介绍
Spring Cloud Cluster提供了一组用于在分布式系统中构建“集群”功能的原语。例如领导选举,集群状态的一致存储,全局锁和一次性令牌。 - 特征
Spring Cloud Consul(用来取代Netflix中的Eureka)
- 介绍
Spring Cloud Consul 通过自动配置和Spring环境以及其他Spring编程模型习惯用法提供Spring Boot应用程序的Consul集成。
通过一些简单的注释,您可以快速启用和配置应用程序内的常见模式,并使用Hashicorp的Consul构建大型分布式系统。提供的模式包括服务发现,分布式配置和控制总线。 - 特征
1、服务发现:可以向Consul代理注册实例,客户端可以使用Spring管理的bean发现实例
2、通过Spring Cloud Netflix支持Ribbon,客户端负载均衡器
3、通过Spring Cloud Netflix支持Zuul,一个动态路由器和过滤器
4、分布式配置:使用Consul Key / Value存储
5、控制总线:使用Consul事件的分布式控制事件
Spring Cloud Security
- 介绍
Spring Cloud Security提供了一组原语,用于构建安全的应用程序和服务,而且操作简便。
可以在外部(或集中)进行大量配置的声明性模型有助于实现大型协作的远程组件系统,通常具有中央身份管理服务。
它也非常易于在Cloud Foundry等服务平台中使用。
在Spring Boot和Spring Security OAuth2的基础上,我们可以快速创建实现常见模式的系统,如单点登录,令牌中继和令牌交换。 - 特征
1、从Zuul代理中的前端到后端服务中继SSO令牌
2、资源服务器之间的中继令牌
3、使Feign客户端表现得像OAuth2RestTemplate
(获取令牌等)的拦截器
4、在Zuul代理中配置下游身份验证
Spring Cloud Sleuth
- 介绍
Spring Cloud Sleuth为Spring Cloud实施分布式跟踪解决方案,大量借用Dapper,Zipkin和HTrace。
对于大多数用户来说,侦探应该是隐形的,并且所有与外部系统的交互都应该自动进行检测。
您可以简单地在日志中捕获数据,也可以将数据发送到远程收集器服务。 - 特征
1、将跟踪和跨度ID添加到Slf4J MDC,因此您可以从日志聚合器中的给定跟踪或跨度中提取所有日志。
2、提供对常见分布式跟踪数据模型的抽象:跟踪,跨距(形成DAG),注释,键值注释。松散地基于HTrace,但兼容Zipkin(Dapper)。
3、乐器常见的入口和出口点来自Spring应用程序(servlet过滤器,休息模板,预定动作,消息通道,zuul过滤器,假装客户端)。
4、如果spring-cloud-sleuth-zipkin
可用,则应用程序将通过HTTP生成并收集与Zipkin兼容的跟踪。默认情况下,它将它们发送到localhost(端口9411)上的Zipkin收集器服务。使用配置服务的位置spring.zipkin.baseUrl
。
Spring Cloud Data Flow
- 介绍
Spring Cloud Data Flow是用于构建数据集成和实时数据处理管道的工具包。
管道由Spring Boot应用程序组成,使用Spring Cloud Stream或Spring Cloud Task微服务框架构建。
这使得Spring Cloud Data Flow适用于各种数据处理用例,从导入/导出到事件流和预测分析。 - 特征
Spring Cloud Stream
- 介绍
Spring Cloud Stream是一个用于构建与共享消息传递系统相连的高度可扩展的事件驱动微服务的框架。
该框架提供了基于已经建立和熟悉的Spring习语和最佳实践的灵活编程模型,包括对持久性发布/子语义,使用者组和有状态分区的支持。 - 特征
Spring Cloud Stream App Starters
- 介绍
Spring Cloud Stream Application Starters是独立的可执行应用程序,可通过Apache Kafka和RabbitMQ等消息传递中间件进行通信。
这些应用程序可以在各种运行时平台上独立运行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至可以在您的笔记本电脑上运行。 - 特征
1、独立运行作为Spring Boot应用程序
2、将微服务组合为Spring Cloud Data Flow中的流管道
3、乐器常见的入口和出口点来自Spring应用程序(servlet过滤器,休息模板,预定动作,消息通道,zuul过滤器,假装客户端)。
4、通过命令行,环境变量或YAML文件覆盖配置参数
5、提供基础架构以单独测试应用程序
Spring Cloud - Cloud Foundry Service Broker(被替代)
- 介绍
该项目提供了一个框架,用于构建Spring Boot项目以快速实现Cloud Foundry的服务代理。 - 特征
Spring Cloud Commons
- 介绍
Spring Cloud Commons提供两个库的功能:Spring Cloud Context和Spring Cloud Commons。
Spring Cloud Context为Spring Cloud应用程序的ApplicationContext(引导上下文,加密,刷新范围和环境端点)提供实用程序和特殊服务。
Spring Cloud Commons是一组用于不同Spring Cloud实现的抽象和公共类(例如,Spring Cloud Netflix与Spring Cloud Consul)。 - 特征
Spring Cloud Context功能:
1、引导上下文
2、TextEncryptor
beans
3、刷新范围
4、Spring Boot Actuator endpoints for manipulating theEnvironment
Spring Cloud Commons功能:
1、DiscoveryClient
接口
2、ServiceRegistry
接口
3、RestTemplate
使用的解析主机名的工具DiscoveryClient
Spring Cloud Skipper
- 介绍
Skipper是一个工具,允许您发现Spring Boot应用程序并管理其在多个云平台上的生命周期。您可以单独使用Skipper或将其与Continuous Integration管道集成,以帮助实现应用程序的持续部署。
系统设计受到Kubernetes生态系统中执行资源模板和/或编排的大量项目的影响,因此受到航海启发的项目名称为Skipper。Skipper中的应用程序捆绑为包,其中包含模板化配置文件和用于填充模板的默认值集。您可以在安装或升级软件包时覆盖这些默认值。
Skipper提供了一种方法来协调不同版本之间的应用程序的升级/回滚过程,采取最小的操作集使系统进入所需状态。 - 特征
1、定义可以部署Spring Boot应用程序的多个平台帐户。支持的平台包括Local,Cloud Foundry和Kubernetes
2、Mustache模板化文件中的替换变量,描述如何将应用程序部署到平台
3、搜索现有应用程序的包存储库
4、基于简单的工作流程安装/升级/回滚软件包
5、存储已解析模板文件(也称为“应用程序清单”)的历史记录,这些文件代表已部署到特定版本的平台的最终描述
6、通过独立的交互式shell或通过Web API使用来补充CI工作流
Spring Cloud GCP
- 介绍
Spring Cloud GCP项目旨在使Spring Framework成为Google Cloud Platform(GCP)的一流公民。
目前,Spring Cloud GCP可以让您利用Spring框架的强大功能和简单性:
1、发布和订阅Google Cloud Pub / Sub主题
2、使用一些属性配置Spring JDBC以使用Google Cloud SQL
3、从Google Cloud Storage备份的Spring Resources写入和读取
4、使用Google Cloud Pub / Sub在后台与Spring Integration交换消息
5、使用Spring Cloud Sleuth和Google Stackdriver Trace跟踪应用程序的执行情况
6、使用由Google Runtime Configuration API备份的Spring Cloud Config配置您的应用程序
7、通过Spring Integration GCS渠道适配器消费和生成Google云端存储数据 - 特征
1、用于依赖版本管理的物料清单(BOM)
2、Spring Cloud GCP Pub / Sub,包括PubSubTemplate
3、Google云端存储的Spring资源抽象
4、适用于Google Cloud Pub / Sub和Google Cloud Storage的Spring集成渠道适配器
5、Pub / Sub的Spring Cloud Stream Binder
6、Spring Data Spanner(BETA)
7、Spring Boot启动器
8、GCP支持
9、Google Cloud Config(BETA)
10、Google Cloud Spanner(BETA)
11、Google Cloud Logging
12、Google Cloud Pub / Sub
13、Google Cloud SQL
14、Google云端存储
15、堆栈追踪 Spring Cloud Sleuth
Spring Cloud Function
- 介绍
它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。
Spring Cloud Function是一个具有以下高级目标的项目:
1、通过功能促进业务逻辑的实现
2、将业务逻辑的开发生命周期与任何特定的运行时目标分离,以便相同的代码可以作为Web端点,流处理器或任务运行
3、支持无服务器提供商之间的统一编程模型,以及独立运行(本地或PaaS)的能力
4、在无服务器提供商上启用Spring Boot功能(自动配置,依赖注入,指标) - 特征
1、@Beans
类型的包装器Function
,Consumer
以及Supplier
使用RabbitMQ,Kafka等将它们作为HTTP端点和/或消息流监听器/发布者暴露给外部世界
2、将作为Java函数体的字符串编译为字节码,然后将它们转换为@Beans
可以如上所述进行包装
3、使用隔离的类加载器部署包含此类应用程序上下文的JAR文件,以便您可以将它们打包在一个JVM中
4、AWS Lambda,Microsoft Azure,Apache OpenWhisk以及可能的其他“无服务器”服务提供商的适配器
Spring Cloud Task
- 介绍
Spring Cloud Task允许用户使用Spring Cloud开发和运行短期微服务,并在云中本地运行,甚至在Spring Cloud Data Flow上运行。
只需添加@EnableTask
并运行您的应用程序作为Spring Boot应用程序(单个应用程序上下文)。如果您不熟悉Spring Cloud Task,请查看我们的入门文档。 - 特征
Spring Cloud Task App Starters
- 介绍
Spring Cloud Task Application Starters是Spring Boot 应用程序,可能是任何进程,包括 不能永久运行的Spring Batch作业,并且它们在某些时候结束/停止。
Spring Cloud Task Applications可与Spring Cloud Data Flow一起使用,以创建,部署和编排短期数据微服务。Spring Cloud Task Application Starters是独立的可执行应用程序,可用于按需用例,例如数据库迁移,机器学习和计划操作。
这些应用程序可以在各种运行时平台上独立运行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至可以在您的笔记本电脑上运行。 - 特征
1、独立运行作为Spring Boot应用程序
2、编排为短暂的数据微服务
3、将数据微服务应用程序用作maven或docker工件
4、通过命令行,环境变量或YAML文件覆盖配置参数
5、提供基础架构以单独测试应用程序
Spring Cloud Zookeeper
- 介绍
pring Cloud Zookeeper 通过自动配置和Spring环境以及其他Spring编程模型习惯用法为Spring Boot应用程序提供Apache Zookeeper集成。
通过一些简单的注释,您可以快速启用和配置应用程序内的公共模式,并使用Zookeeper构建大型分布式系统。提供的模式包括服务发现和分布式配置。 - 特征
1、服务发现:可以向Zookeeper注册实例,客户端可以使用Spring管理的bean发现实例
2、通过Spring Cloud Netflix支持Ribbon,客户端负载均衡器
3、通过Spring Cloud Netflix支持Zuul,一个动态路由器和过滤器
4、分布式配置:使用Zookeeper作为数据存储
Spring Cloud for Amazon Web Services
- 介绍
Spring Cloud for Amazon Web Services是Spring Cloud伞形项目的一部分,可以简化与托管Amazon Web Services的集成。
它提供了一种使用众所周知的Spring习语和API(如消息传递或缓存API)与AWS提供的服务进行交互的便捷方式。
开发人员可以围绕托管服务构建应用程序,而无需关心基础结构或维护。 - 特征
1、[SQS]的Spring Messaging API实现(http://aws.amazon.com/sqs/)
2、[ElastiCache]的Spring Cache API实现(http://aws.amazon.com/elasticache/)
3、基于注释的[SNS](http://aws.amazon.com/sns/)端点(HTTP)映射
4、按照[CloudFormation](http://aws.amazon.com/cloudformation/)堆栈中定义的逻辑名访问资源
5、DataSource
基于[RDS](http://aws.amazon.com/rds/)实例的逻辑名称自动创建JDBC
6、ResourceLoader
[S3](http://aws.amazon.com/s3/)存储桶的Ant风格路径匹配
Spring Cloud Connectors
- 介绍Spring Cloud Connectors简化了云平台(如Cloud Foundry和Heroku)中连接服务和获取操作环境感知的过程,尤其适用于Spring应用程序。
它是为可扩展性而设计的:您可以使用提供的云连接器之一或为您的云平台编写一个,并且您可以使用内置支持常用服务(关系数据库,MongoDB,Redis,RabbitMQ)或扩展Spring云连接器可与您自己的服务配合使用。 - 特征
Spring Cloud Starters
- 介绍
Spring boot热插拔、提供默认配置、开箱即用的依赖。 - starter 是spring boot框架非常基础的部分。可以自定义starter。
- 特征
Spring Cloud CLI
- 介绍
Spring Boot CLI 为Spring Cloud提供Spring Boot命令行功能。您可以编写Groovy脚本来运行Spring Cloud组件应用程序(例如)。
您还可以轻松执行加密和解密等操作,以支持具有秘密配置值的Spring Cloud Config客户端。
使用Launcher CLI,您可以从命令行方便地一次性启动Eureka,Zipkin,Config Server等服务(在开发时非常有用)。@EnableEurekaServer - 特征
Spring Cloud Contract
- 介绍
Spring Cloud Contract是一个总体项目,其中包含帮助用户成功实施消费者驱动合同方法的解决方案。目前,Spring Cloud Contract包含Spring Cloud Contract Verifier项目。
Spring Cloud Contract Verifier将TDD提升到软件架构的水平。
Spring Cloud Contract Verifier是一个支持基于JVM的应用程序的消费者驱动合同(CDC)开发的工具。
它附带了用Groovy或YAML编写的合同定义语言(DSL)。合同定义用于生成以下资源:
1、默认情况下,在对客户端代码(客户端测试)进行集成测试时,WireMock(HTTP Server Stub)将使用JSON存根定义。测试代码仍然必须手工编写,测试数据由Spring Cloud Contract Verifier生成
2、如果你使用消息路由消息路由。我们正在与Spring Integration,Spring Cloud Stream和Apache Camel集成。但是,如果您愿意,可以设置自己的集成
3、验证测试(默认情况下,在JUnit或Spock中)用于验证API的服务器端实现是否符合合同(服务器测试)。Spring Cloud Contract Verifier生成完整测试 -
特征
在尝试测试与其他服务通信的应用程序时,我们可以执行以下两项操作之一:
部署所有微服务并执行端到端测试
模拟单元/集成测试中的其他微服务
两者都有其优点,但也有很多缺点。让我们关注后者。
部署所有微服务并执行端到端测试
好处:
1、模拟生产
2、测试服务之间的真实通信
缺点:
1、为了测试一个微服务,我们必须部署6个微服务,几个数据库等
2、将进行测试的环境将被锁定用于一组测试(即,其他任何人都无法在此期间运行测试)
3、很长时间跑
4、很晚的反馈
5、非常难以调试
在单元/集成测试中模拟其他微服务
好处:
1、非常快速的反馈
2、无基础设施要求
缺点:
1、服务的实现者创建存根,因此他们可能与现实无关
2、你可以通过测试和生产失败去生产
为了解决上述问题,创建了带有Stub Runner的Spring Cloud Contract Verifier。他们的主要想法是给你非常快速的反馈,而不需要建立整个微服务世界
1、确保HTTP / Messaging存根(在开发客户端时使用)正在执行实际的服务器端实现
2、促进验收测试驱动开发方法和微服务架构风格
3、提供一种方法来发布在通信双方立即可见的合同中的更改
4、生成服务器端使用的样板测试代码
Spring Cloud Gateway(用来取代Netflix中的zuul)
- 介绍
该项目提供了一个用于在Spring MVC之上构建API网关的库。
Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为他们提供横切关注点,例如:安全性,监控/指标和弹性。 - 特征
1、基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建
2、能够匹配任何请求属性上的路由
3、谓词和过滤器特定于路线
4、Hystrix断路器集成
5、Spring Cloud DiscoveryClient集成
6、易于编写谓词和过滤器
7、请求率限制
8、路径重写
Spring Cloud OpenFeign
- 介绍
该项目通过自动配置和Spring环境以及其他Spring编程模型习惯用法为Spring Boot应用程序提供OpenFeign集成。 - 特征
1、声明性REST客户端:Feign创建使用JAX-RS或Spring MVC注释修饰的接口的动态实现
Spring Cloud Pipelines
- 介绍
Spring,Spring Boot和Spring Cloud是允许开发人员加快创建新业务功能的工具。
然而,众所周知,该功能只有在生产中才有价值。这就是为什么公司花费大
该项目试图解决以下问题:量时间和资源来构建自己的部署管道。 - 特征
1、声明性REST客户端:Feign创建使用JAX-RS或Spring MVC注释修饰的接口的动态实现
Spring Cloud Vault
- 介绍
Spring Cloud Vault Config为分布式系统中的外部化配置提供客户端支持。
使用HashiCorp的Vault,您可以在所有环境中为应用程序管理外部机密属性。
Vault可以管理静态和动态机密,例如远程应用程序/资源的用户名/密码,并为外部服务提供凭据,如MySQL,PostgreSQL,Apache Cassandra,MongoDB,Consul,AWS等。 - 特征
1、从Vault检索机密并使用远程属性源初始化Spring Environment
2、获取使用SSL保护的机密
3、为MySQL,PostgreSQL,Apache Cassandra,MongoDB,Consul,AWS和RabbitMQ生成凭据
4、令牌,AppId,AppRole,客户端证书,Cubbyhole,以及AWS EC2和IAM,Kubernetes身份验证
5、Bootstrap应用程序上下文:主应用程序的父上下文,可以训练为执行任何操作
6、通过Spring Cloud Vault Connector使用HashiCorp的Vault服务代理进行Cloud Foundry集成