一 Spring Cloud 概述

SpringCloud整体架构概览什么是SpringCloud目标协调任何服务 , 简化分布式系统开发 。
简介构建分布式系统不应该是复杂的 , SpringCloud对常见的分布式系统模式提供了简单易用的编程模型 , 帮助开发者构建弹性、可靠、协调的应用程序 。
SpringCloud是在SpringBoot的基础上构建的 , 使开发者可以轻松入门并快速提高工作效率 。
SpringCloud为开发人员提供了快速构建分布式系统架构的工具 , 例如配置管理 , 服务发现 , 断路器 , 智能路由 , 微代理 , 控制总线 , 一次性令牌 , 全局锁定 , 领导选举 , 分布式会话 , 集群状态等 。
整体架构

一 Spring Cloud 概述

文章插图
SpringCloud的版本关系SpringCloud是一个由许多子项目组成的综合项目 , 各子项目有不同的发布节奏 。
为了管理SpringCloud与各子项目的版本依赖关系 , 发布了一个清单 , 其中包括了某个SpringCloud版本对应的子项目版本 。
为了避免SpringCloud版本号与子项目版本号混淆 , SpringCloud版本采用了名称而非版本号的命名 , 这些版本的名字采用了伦敦地铁站的名字 , 根据字母表的顺序来对应版本时间顺序 , 例如Angel是第一个版本, Brixton是第二个版本 。
当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后 , 会发布一个"service releases"版本 , 简称SRX版本 , 比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本 。
SpringCloud子项目简介Spring Cloud Config集中配置管理工具 , 分布式系统中统一的外部配置管理 , 默认使用Git来存储配置 , 可以支持客户端配置的刷新及加密、解密操作 。
Spring Cloud NetflixNetflix OSS 开源组件集成 , 包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件 。
  • Eureka:服务治理组件 , 包括服务端的注册中心和客户端的服务发现机制;
  • Ribbon:负载均衡的服务调用组件 , 具有多种负载均衡调用策略;
  • Hystrix:服务容错组件 , 实现了断路器模式 , 为依赖服务的出错和延迟提供了容错能力;
  • Feign:基于Ribbon和Hystrix的声明式服务调用组件;
  • Zuul:API网关组件 , 对请求提供路由及过滤功能 。
Spring Cloud Bus用于传播集群状态变化的消息总线 , 使用轻量级消息代理链接分布式系统中的节点 , 可以用来动态刷新集群中的服务配置 。
Spring Cloud Consul基于Hashicorp Consul的服务治理组件 。
Spring Cloud Security安全工具包 , 对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持 。
Spring Cloud SleuthSpringCloud应用程序的分布式请求链路跟踪 , 支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪 。
Spring Cloud Stream轻量级事件驱动微服务框架 , 可以使用简单的声明式模型来发送及接收消息 , 主要实现为Apache Kafka及RabbitMQ 。
Spring Cloud Task用于快速构建短暂、有限数据处理任务的微服务框架 , 用于向应用中添加功能性和非功能性的特性 。
Spring Cloud Zookeeper基于Apache Zookeeper的服务治理组件 。
Spring Cloud GatewayAPI网关组件 , 对请求提供路由及过滤功能 。
Spring Cloud OpenFeign基于Ribbon和Hystrix的声明式服务调用组件 , 可以动态创建基于Spring MVC注解的接口实现用于服务调用 , 在SpringCloud 2.0中已经取代Feign成为了一等公民 。
Spring Cloud Alibaba概述Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案 。此项目包含开发分布式应用微服务的必需组件 , 方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务 。
依托 Spring Cloud Alibaba , 您只需要添加一些注解和少量配置 , 就可以将 Spring Cloud 应用接入阿里微服务解决方案 , 通过阿里中间件来迅速搭建分布式应用系统 。
Github:https://github.com/alibaba/spring-cloud-alibaba
SpringCloud Alibaba 组件简介Spring Cloud的几大痛点
  • 部分组件停止维护和更新 , 有问题也不易解决
  • 部分环境搭建起来比较复杂 , 没有非常友好的可视化界面
  • 配置相对来说复杂 , 需要较高的学习成本
Spring Cloud Alibaba的优势
  • 阿里经历过了时间的考验
  • 设计合理
  • 拥有不错的可视化界面 , 方便运维监控和排查问题
  • 环境搭建和配置简单 , 学习成本低
SpringCloud Alibaba技术的搭配方案
描述Spring CloudSpring Cloud Alibaba组合选用服务发现组件Eureka(停止维护)服务发现组件Nacos 注册中心Spring Cloud Alibaba - Nacos配置中心组件Spring Cloud Config 配置中心Nacos 配置中心Spring Cloud Alibaba - Nacos断路保护组件Hystrix 断路保护Sentinel 服务容错Spring Cloud Alibaba - Sentinel链路追踪组件Sleuth 调用链监控/Spring Cloud - Sleuth负载均衡组件Ribbon/Spring Cloud - Ribbon远程调用组件OpenFeign (HTTP+JSON)Dubbo(RPC框架)Spring Cloud - OpenFeign分布式事务/Seata 分布式事务Spring Cloud Alibaba - SeataAPI 网关Gateway/Spring Cloud - GatewaySpring Cloud Alibaba版本项目的版本号格式为 x.x.x 的形式 , 其中 x 的数值类型为数字 , 从 0 开始取值 , 且不限于 0~9 这个范围 。项目处于孵化器阶段时 , 第一位版本号固定使用 0 , 即版本号为 0.x.x 的格式 。
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更 , 且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更 , 因此阿里采取跟 SpringBoot 版本号一致的版本:
  • 1.5.x 版本适用于 Spring Boot 1.5.x
  • 2.0.x 版本适用于 Spring Boot 2.0.x
  • 2.1.x 版本适用于 Spring Boot 2.1.x
  • 2.2.x 版本适用于 Spring Boot 2.2.x
Spring Cloud Alibaba 版本和Spring Cloud 和Spring Boot 版本兼容性列表
Spring Cloud 版本Spring Cloud Alibaba 版本Spring Boot 版本Spring Cloud Hoxton.SR32.2.x.RELEASE2.2.x.RELEASESpring Cloud Greenwich2.1.x.RELEASE2.1.x.RELEASESpring Cloud Finchley2.0.x.RELEASE2.0.x.RELEASESpring Cloud Edgware1.5.x.RELEASE1.5.x.RELEASE我们采用Spring Cloud Hoxton.SR3, Spring Cloud Alibaba 2.2.0.RELEASE, Spring Boot 2.2.6 RELEASE
Spring Cloud Alibaba依赖
【一 Spring Cloud 概述】<dependencyManagement><dependencies><!--Spring Cloud Alibaba 依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>