协调任何服务,简化分布式系统开发。git
构建分布式系统不该该是复杂的,SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。
SpringCloud是在SpringBoot的基础上构建的,使开发者能够轻松入门并快速提升工做效率。
SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态等。github
SpringCloud是一个由许多子项目组成的综合项目,各子项目有不一样的发布节奏。
为了管理SpringCloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个SpringCloud版本对应的子项目版本。
为了不SpringCloud版本号与子项目版本号混淆,SpringCloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,例如Angel是第一个版本, Brixton是第二个版本。
当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,好比Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本。spring
集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,能够支持客户端配置的刷新及加密、解密操做。编程
Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。安全
用于传播集群状态变化的消息总线,使用轻量级消息代理连接分布式系统中的节点,能够用来动态刷新集群中的服务配置。架构
基于Hashicorp Consul的服务治理组件。负载均衡
安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登陆认证进行支持。框架
SpringCloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。运维
轻量级事件驱动微服务框架,可使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。分布式
用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。
基于Apache Zookeeper的服务治理组件。
API网关组件,对请求提供路由及过滤功能。
基于Ribbon和Hystrix的声明式服务调用组件,能够动态建立基于Spring MVC注解的接口实现用于服务调用,在SpringCloud 2.0中已经取代Feign成为了一等公民。
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者经过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,您只须要添加一些注解和少许配置,就能够将 Spring Cloud 应用接入阿里微服务解决方案,经过阿里中间件来迅速搭建分布式应用系统。
Github:https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud的几大痛点
Spring Cloud Alibaba的优点
SpringCloud Alibaba技术的搭配方案
描述 | Spring Cloud | Spring 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 - Seata |
API 网关 | Gateway | / | Spring Cloud - Gateway |
项目的版本号格式为 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 版本号一致的版本:
Spring Cloud Alibaba 版本和Spring Cloud 和Spring Boot 版本兼容性列表
Spring Cloud 版本 | Spring Cloud Alibaba 版本 | Spring Boot 版本 |
---|---|---|
Spring Cloud Hoxton.SR3 | 2.2.x.RELEASE | 2.2.x.RELEASE |
Spring Cloud Greenwich | 2.1.x.RELEASE | 2.1.x.RELEASE |
Spring Cloud Finchley | 2.0.x.RELEASE | 2.0.x.RELEASE |
Spring Cloud Edgware | 1.5.x.RELEASE | 1.5.x.RELEASE |
咱们采用Spring Cloud Hoxton.SR3
, Spring Cloud Alibaba 2.2.0.RELEASE
, Spring Boot 2.2.6 RELEASE
Spring Cloud Alibaba依赖
<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>