Spring Cloud
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态)。
分布式系统的协调使用模板模式,使用SpringCloud开发人员可以快速地支持实现这些样板的服务和应用程序。
1.Spring Cloud 主要项目和组件
Spring Cloud根据分布式服务协调治理
的需求成立了许多子项目
,每个项目通过特定的组件去实现,如Spring Cloud Zookeeper
使用zookeeper
实现服务注册与发现,再如Spring Cloud Netflix
包含了很多功能强大的组件Eureka
、Hystrix
、Zuul
、Archaius
等。
使用时根据业务的复杂程度
选择合适的项目、组件
来实现。
1.1 主要项目
- 1.Spring Cloud Config
配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。 - 2.Spring Cloud Netflix
与各种Netflix OSS组件(Eureka、Hystrix、Zuul、Archaius等)集成。 - 3.Spring Cloud Bus
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。 - 4.Spring Cloud Cloudfoundry
将应用程序与Pivotal Cloud Foundry集成。提供服务发现实现,并使实现受SSO和OAuth2保护的资源变得容易。 - 5.Spring Cloud Open Service Broker
提供用于构建实现开放式ServiceBroker API的ServiceBroker的起点。 - 6.Spring Cloud Cluster
提供Leadership选举,如:Zookeeper, Redis, Hazelcast, Consul等常见状态模式的抽象和实现。 - 7.Spring Cloud Consul
使用Hashicorp Consul进行服务发现和配置管理。 - 8.Spring Cloud Security
提供对zuul代理中负载平衡的OAuth2 REST客户端和身份验证头中继的支持。 - 9.Spring Cloud Sleuth
针对SpringCloud应用程序的分布式服务跟踪,兼容Zipkin、HTrace和基于日志的(如Elk)跟踪。 - 10.Spring Cloud Data Flow
一种用于现代运行时可组合微服务应用程序的云本地编排服务。易于使用的DSL、拖放式GUI和RESTAPI一起简化了基于微服务的数据管道的总体编排。 - 11.Spring Cloud Stream
数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。 - 12.Spring Cloud Stream App Starters
SpringCloud流应用程序启动器是基于Spring引导的Spring集成应用程序,提供与外部系统的集成。。 - 13.Spring Cloud Task
一个短生命周期的微服务框架,用于快速构建执行有限数量数据处理的应用程序。用于向Spring引导应用程序添加功能性和非功能性功能的简单声明性。 - 14.Spring Cloud Task App Starters
SpringCloud任务应用程序启动器是SpringBoot应用程序,它可以是任何进程,包括不会永久运行的Spring批处理作业,它们在有限的数据处理周期后结束/停止。 - 15.Spring Cloud Zookeeper
操作Zookeeper的工具包,用于使用zookeeper方式的服务发现和配置管理。 - 16.Spring Cloud AWS
与托管的Amazon Web服务轻松集成。它提供了一种使用众所周知的Spring习惯用法和API(如消息传递或缓存API)与AWS提供的服务进行交互的方便方法。 - 17.Spring Cloud Connectors
使各种平台中的PaaS应用程序很容易连接到后端服务,如数据库和消息代理(该项目以前称为“SpringCloud”)。 - 18.Spring Cloud CLI
用于在groovy中快速创建SpringCloud组件应用程序的Springbootcli插件。 - 19.Spring Cloud Contract
Contract是一个伞形项目,它拥有帮助用户成功实施消费者驱动的合同方法的解决方案。 - 20.Spring Cloud Gateway
Gateway是一种基于工程反应器的智能可编程路由器。 - 21.Spring Cloud OpenFeign
OpenFeign通过自动配置和绑定到Spring环境和其他Spring编程模型习语,为Spring引导应用程序提供集成。 - 22.Spring Cloud Pipelines
SpringCloudPipelines提供了一个有步骤的固定部署管道,以确保您的应用程序可以以零停机的方式部署,并且很容易回滚出错的内容。 - 23.Spring Cloud Function
Function通过函数来促进业务逻辑的实现。它支持跨无服务器提供程序的统一编程模型,以及独立运行(本地或在PaaS中)的能力。
1.2 Spring Cloud Netflix 组件
Netflix
下组件最为常用:
- 1.Eureka
云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。 - 2.Hystrix
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 - 3.Ribbon
提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。 - 4.Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架,Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。 - 5.Archaius
Archaius 是一个基于apache commons configuration的动态属性配置框架, 提供在运行时获取配置值的功能。
参考:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.2.0.M1/
2.Spring Cloud 应用
2.1 Spring Boot
Spring Boot遵循约定大于配置
,既然很多东西都是一样的,为什么还要去配置。
- 通过starter和依赖管理解决依赖问题。
- 通过自动配置,解决配置复杂问题。
- 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题。
2.2 Spring Boot 与Spring Cloud 关系
Spring Boot用于构建MVC或WebFlux的Web工程,它是一个独立的框架,可以根据需要集成各种持久层,MQ,API框架;
Spring Cloud依赖Spring Boot,通过Spring Boot来构建各个组件(微服务);
Spring Cloud侧重于全局的微服务协调治理,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等集成服务。
2.3 Spring Cloud 架构
官网给出的总体架构
:
项目中根据不同业务需要对
具体组件
的应用:
参考资料:
[ 1 ].https://spring.io/projects/spring-cloud
[ 2 ].https://springcloud.cc/
[ 3 ].https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.2.0.M1/
[ 4 ].Spring Cloud微服务实战 翟永超 著 中国工信出版社/电子工业出版社 2017.5