SpringCloud+MySql+Redis+ES+security搭建选型之路前言(一)
由于工作需要,需要通过MySql+Redis+Elasticsearch+scurity搭建一个SpringCloud框架,出于针对一个目前比较成熟的微服务框架如何选型的问题,本文基于最新稳定版Spring Cloud Hoxton SR5做了简单剖析。
原文链接:SpringCloud+MySql+Redis+ES+security搭建选型之路-前言(一)
在搭建SpringCloud环境之前,还是需要普及下基本知识,如果对此部分已经收悉的朋友请直接跳过本章,进入下一文章。
SpringCloud+MySql+Redis+ES+security选型-注册中心和ES选型(二)
SpringCloud+MySql+Redis+ES+security选型-security(三)
首先就是Spring Cloud 的组件,也被称为Spring Cloud全家桶。在介绍Spring Cloud 全家桶之前,首先要介绍一下Netflix ,Netflix 是一个很伟大的公司,在Spring Cloud项目中占着重要的作用,Netflix 公司贡献了包括Eureka、Hystrix、Zuul、Archaius等在内的很多组件,在微服务架构中至关重要。而Spring在Netflix 的基础上,封装了一系列的组件,命名为:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等。
除了这些组件外,Spring Cloud 还包含了十几种的其他组件,以下为基于Spring Cloud 最新的Hoxton SR5的一个组件图谱。
Spring Cloud Config
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以集中管理所有环境中应用程序的外部属性。
Config Server具有如下功能:
HTTP,用于配置基于外部资源的API(KEY-VALUE,或具有相同效果的YAML内容)
加密和解密属性值(对称或非对称)
可轻松地使用Spring Boot应用程序嵌入 @EnableConfigServer
Config Client功能(用于Spring应用程序):
绑定到Config Server并使用远程属性源初始化Spring环境
加密和解密属性值(对称或非对称)
上述的意思大概解释下,Config Server指的是在Spring Cloud父工程中的一个模块Config,而Config Client指的是除了Config以外的其他模块(包含业务模块和Sping Cloud本身的组件),而一旦在Config Server中配置,在Config Client中就能通过注解来使用它的配置。
Config Client使用示例如下(是不是感觉跟不使用Config Server没什么区别^_^):
@Value("${config.name}") //Client Server中定义的属性配置
String name = "World";
官方详细说明请参考:spring-cloud-config
Spring Cloud Netflix
Spring Cloud Netflix通过自动配置并绑定到Spring Environment和其他的模块,为Spring Boot应用程序提供Netflix OSS集成。通过一些简单的注释,您可以快速配置和启用内部的应用程序,并使用经过测试的Netflix组件构建大型分布式系统。Netflix提供的模式包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。
Spring Cloud Netflix具有以下功能:
服务发现:可以注册Eureka实例,并且客户端可以使用Spring托管的Bean发现实例
服务发现:可以使用声明式Java配置并创建嵌入式的Eureka服务器
断路器:Hystrix客户端可以使用简单的注释驱动的方法装饰器构建
断路器:具有声明性Java配置的嵌入式Hystrix仪表板
声明式REST客户端:Feign创建一个用JAX-RS或Spring MVC注释修饰的接口的动态实现。
客户端负载均衡器:功能区
外部配置:从Spring Environment到Archaius的桥梁(使用Spring Boot规则启用Netflix组件的本机配置)
路由器和过滤器:Zuul过滤器的自动注册,以及用于反向代理创建的简单配置约定
官方详细说明请参考:Spring Cloud Netflix
Spring Cloud Bus
Spring Cloud Bus将轻量级消息代理程序链接到分布式系统的节点。然后可以将其用于广播状态更改(例如,配置更改)或其他管理指令。该模块包括AMQP和Kafka实现。另外,在类路径上找到的任何Spring Cloud Stream绑定程序都可以作为传输工具使用。
Spring Cloud Cloudfoundry
将您的应用程序与Pivotal Cloud Foundry集成。提供服务发现实现,还可以轻松实现SSO和OAuth2保护的资源。
Spring Cloud Open Service Broker
在开放的Service Broker API项目允许开发者将应用部署到本地的云平台,例如Cloud Foundry,Kubernetes和OpenShift内,并未运行的应用程序提供服务。Spring Cloud Open Service Broker提供基于Spring Boot的框架,使您能够在支持Open Service Broker API的平台上为自己的托管服务快速创建服务代理。
注意:不同版本的Spring Boot 配置使用方法不同,详见官方文档:Spring Cloud代理实现
Spring Cloud Cluster
Zookeeper,Redis,Hazelcast,Consul的领导层选举和常见状态模式以及抽象和实现。
Spring Cloud Cluster提供了一种用于在分布式系统中构建“集群”功能的标准和基础。 例如领导选举,群集状态的一致存储,全局锁和一次性令牌。
Spring Cloud Consul
Spring Cloud Consul 通过自动配置并绑定到Spring Environment和其他Spring模块,为Spring Boot应用程序提供Consul集成。通过一些简单的注释,您可以快速启用和配置应用程序内的通用模式,并使用基于Hashicorp的Consul构建大型分布式系统。提供的模式包括服务发现,分布式配置和控制总线。
Spring Cloud Consul具有以下功能:
服务发现:可以向Consul代理注册实例,并且客户端可以使用Spring托管的Bean发现实例
通过Spring Cloud Netflix支持Ribbon,客户端负载均衡器
支持Spring Cloud LoadBalancer-Spring Cloud项目提供的客户端负载均衡器
通过Spring Cloud Netflix支持Zuul,动态路由器和过滤器
分布式配置:使用领事键/值存储
控制总线:使用Consul Events的分布式控制事件
详细说明见官方文档:Spring Cloud Consul官方文档
Spring Cloud Security
Spring Cloud Security提供了一组用于以最小的成本构建安全的应用程序和服务。可以在项目外部(或集中配置)进行大量配置的声明性模型,通常可以通过集中配置管理服务来实现大型的,相互协作的远程组件系统。在Cloud Foundry等服务平台中使用它也非常容易。在Spring Boot和Spring Security OAuth2的基础上,我们可以快速创建实现常见模式(如单点登录,令牌中继和令牌交换)的系统。
Spring Cloud Security功能:
在Zuul代理中将SSO令牌从前端中继到后端服务
资源服务器之间的中继令牌
拦截器,使Feign客户端的行为类似于OAuth2RestTemplate(获取令牌等)
在Zuul代理中配置下游身份验证
详细说明见官方文档:Spring Cloud Security 配置说明
Spring Cloud Sleuth
Spring Cloud Sleuth为分布式跟踪提供了Spring Boot自动配置实现。
Sleuth配置了您入门所需的一切。这包括向何处报告跟踪数据(跨度),保留(跟踪)多少条跟踪,是否发送远程字段以及跟踪哪些库。
Spring Cloud Sleuth 具有以下功能:
将跟踪和跨度ID添加到Slf4J MDC,以便您可以从给定的跟踪或跨度中的日志聚合器中提取所有日志。
从Spring应用程序(Servlet过滤器,Rest模板,计划的操作,消息通道,伪装客户端)检测常见的入口和出口点。
如果spring-cloud-sleuth-zipkin可用,则该应用将通过HTTP 生成并报告与Zipkin兼容的跟踪。默认情况下,它将它们发送到本地主机(端口9411)上的Zipkin收集器服务。使用来配置服务的位置spring.zipkin.baseUrl。
详细说明见官方文档:Spring Cloud Security 配置说明
Spring Cloud Data Flow
Spring Cloud Data Flow提供了用于为流和批处理数据管道创建复杂拓扑的工具。数据管道包含使用Spring Cloud Stream或Spring Cloud Task微服务框架构建的Spring Boot应用程序。
用于Cloud Foundry和Kubernetes的基于微服务的流式处理和批处理数据处理。
Spring Cloud Data Flow支持从ETL到导入/导出,事件流和预测分析的一系列数据处理用例。
Spring Cloud Stream
Spring Cloud Stream是一个框架,用于构建与共享消息传递系统连接的高度可扩展的事件驱动型微服务。
该框架提供了一个灵活的编程模型,该模型建立在已经建立并熟悉Spring习惯用法和最佳实践的基础上,包括对持久性pub/sub语义,使用者组和有状态分区的支持。
Spring Cloud Stream和Spring Boot以及Spring Cloud版本对应关系如下:
Spring Cloud Stream
Spring Boot
Spring Cloud
Horsham [3.0.x]
2.2.x
Hoxton
Germantown [2.2.x]
2.1.x
Greenwich
Fishtown [2.1.x]
2.1.x
Greenwich
Elmhurst [2.0.x]
2.0.x
Finchley
它支持多种消息中间件,例如:
RabbitMQ
Apache Kafka
Kafka Streams
Amazon Kinesis
Google PubSub (partner maintained)
Solace PubSub+ (partner maintained)
Azure Event Hubs (partner maintained)
Apache RocketMQ (partner maintained)
Spring Cloud Stream App Starters
Spring Cloud Stream Application Starters是独立的可执行应用程序,它们通过消息传递中间件(例如Apache Kafka和RabbitMQ)进行通信。这些应用程序可以在各种运行时平台上独立运行,包括:Cloud Foundry,Apache Yarn,Apache Mesos,Kubernetes,Docker,甚至在您的笔记本电脑上。
它具有如下功能和特性:
作为Spring Boot应用程序独立运行
将微服务作为Spring Cloud Data Flow中的流水线管道进行组合
将微服务应用程序作为Maven或Docker工件使用
通过命令行,环境变量或YAML文件覆盖配置参数
提供基础架构以隔离地测试应用程序
从此版本的Spring Initializr作为入门下载
它支持以下应用:
cdc-debezium
aggregator
cassandra
file
bridge
counter
ftp
counter
file
gemfire
filter
ftp
gemfire-cq
groovy-filter
gemfire
http
groovy-transform
gpfdist
jdbc
grpc
hdfs
jms
header-enricher
jdbc
load-generator
httpclient
log
loggregator
pmml
rabbit
python-http
mongodb
mongodb
python-jython
mqtt
mqtt
scripable-transform
pgcopy
rabbit
splitter
redis
s3
tasklauncherrequest-transform
router
sftp
tcp-client
s3
sftp-dataflow
transform
sftp
syslog
tensorFlow
tcp
tcp
twitter-sentiment /tensorflow/
throughput
tcp-client
image-recognition /tensorflow/
websocket
time
object-detection /tensorflow/
task-launcher-dataflow
trigger
pose-estimation /tensorflow/
triggertask
twitterstream
在Spring Cloud的模块中配置方式详见官方文档:Spring Cloud Stream App Starters配置
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,Kubernetes,Docker,甚至在笔记本电脑上。
它具有如下特征:
作为Spring Boot应用程序独立运行
协调为临时数据微服务
将数据微服务应用程序作为Maven或Docker工件使用
通过命令行,环境变量或YAML文件覆盖配置参数
提供基础架构以隔离地测试应用程序
运行方法见官方文档:Spring Cloud Task App Starters 定时任务
Spring Cloud Zookeeper
Spring Cloud Zookeeper 通过自动配置并绑定到Spring Environment和其他Spring模块上,为Spring Boot应用程序提供了Apache Zookeeper集成。通过一些简单的注释,您可以快速启用和配置应用程序内的通用模式,并使用Zookeeper构建大型分布式系统。提供的模式包括服务发现和分布式配置。
它具有如下功能特性:
服务发现:实例可以在Zookeeper中注册,客户端可以使用Spring托管的Bean发现实例
支持Spring Cloud LoadBalancer-客户端负载平衡解决方案
支持Spring Cloud OpenFeign
分布式配置:将Zookeeper用作数据存储
如何快速配置,请参见官方文档:Spring Cloud Zookeeper配置
Spring Cloud Connectors
使各种平台上的PaaS应用程序轻松连接到后端服务,例如数据库和消息代理(这个项目以前称为“Spring Cloud”)。
Spring Cloud Starters
Spring Cloud Release Train是一系列Spring Cloud项目中推荐的依赖项。您可以通过使用spring-cloud-dependencies POM在Maven或Gradle中管理依赖关系来使用它。发行版是名称而不是版本号,以避免与子项目混淆。名称是按字母顺序排列的(因此您可以按时间顺序对它们进行排序),带有“London Tube stations”的名称(“ Angel”是第一个发行版,“ Brixton”是第二个发行版)。
详细使用方式见:Spring Cloud Starters详细使用方式
Spring Cloud CLI
Spring Boot CLI 为Spring Cloud提供了Spring Boot命令行功能。您可以编写Groovy脚本来运行Spring Cloud组件应用程序(例如加了@EnableEurekaServer注解的应用)。您还可以轻松地执行诸如加密和解密之类的操作,以通过秘密配置值支持Spring Cloud Config客户端。使用启动器CLI,您可以方便地从命令行一次启动Eureka,Zipkin,Config Server等服务(在开发时非常有用)。
详细说明见:Spring Boot CLI 使用说明
Spring Cloud Contract
Spring Cloud Contract是一个总括项目解决方案,可帮助用户成功实施“消费者驱动合同”方法。当前,Spring Cloud Contract由Spring Cloud Contract Verifier项目组成。
Spring Cloud Contract Verifier是一个工具,可用于基于JVM的应用程序的消费者驱动合同(CDC)开发。它附带了用Groovy或YAML编写的合同定义语言(DSL)。
详见:spring-cloud-contract 详细说明
Spring Cloud Gateway
该项目提供了一个用于在Spring MVC之上构建API网关的库。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到不同模块的API,并为它们提供跨领域的关注,例如:安全性,监视/指标和弹性。
Spring Cloud Gateway具有如下功能:
基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建
能够匹配任何请求属性上的路由。
过滤筛选特定的路由。
Hystrix断路器集成。
Spring Cloud DiscoveryClient集成
易于编写的过滤器
请求速率限制
路径改写
如何配置Gatewar,请参见文档:spring-cloud-gateway 配置说明
Spring Cloud OpenFeign
该项目通过自动配置并绑定到Spring Environment和其他Spring编程模块,为Spring Boot应用程序提供OpenFeign集成。
它具有如下功能
声明式REST客户端:Feign动态创建一个用JAX-RS或Spring MVC注释修饰的接口。
如何配置,请参见官方文档:spring-cloud-openfeign配置
Spring Cloud Pipelines
该项目已弃用。它已迁移到:Cloud Pipelines。
Spring Cloud Function
Spring Cloud Function是一个具有以下高级目标的项目:
通过功能促进业务逻辑的实现。
将业务逻辑的开发生命周期与任何特定的运行时目标脱钩,以便可以将相同的代码作为Web端点,流处理器或任务来运行。
支持跨无服务器提供程序的统一编程模型,以及独立运行(本地或在PaaS中)的能力。
在无服务器提供程序上启用Spring Boot功能(自动配置,依赖项注入,指标)。
它抽象出了所有传输细节和基础结构,使开发人员可以保留所有熟悉的工具和流程,并专注于业务逻辑。
详见:spring-cloud-function详细说明。
以上是 SpringCloud+MySql+Redis+ES+security搭建选型之路前言(一) 的全部内容, 来源链接: utcz.com/z/517849.html