SpringCloud - Spring Cloud Alibaba

Posted MinggeQingchun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud - Spring Cloud Alibaba相关的知识,希望对你有一定的参考价值。

Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,共有两代实现。

(1)Spring Cloud Netflix  是 Spring Cloud 的第一代实现,主要由 Eureka、Ribbon、Feign、Hystrix 等组件组成。

(2)Spring Cloud Alibaba 是 Spring Cloud 的第二代实现,主要由 Nacos、Sentinel、Seata 等组件组成。

Spring Cloud Netflix 可参考 系列博文

SpringCloud - 微服务(Microservices);Spring Cloud详解(一)_MinggeQingchun的博客-CSDN博客_netflix微服务

一、Spring Cloud Alibaba 

Spring Cloud Alibaba 官网

Spring Cloud Alibaba

GitHub地址https://github.com/alibaba/spring-cloud-alibaba

Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud.

With Spring Cloud Alibaba, you only need to add some annotations and a small amount of configurations to connect Spring Cloud applications to the distributed solutions of Alibaba, and build a distributed application system with Alibaba middleware.

Features

Spring Cloud

  • Flow control and service degradation:flow control, circuit breaking and system adaptive protection with Alibaba Sentinel

  • Service registration and discovery:instances can be registered with Alibaba Nacos and clients can discover the instances using Spring-managed beans. Supports Ribbon, the client side load-balancer via Spring Cloud Netflix

  • Distributed Configuration:using Alibaba Nacos as a data store

  • Event-driven:building highly scalable event-driven microservices connected with Spring Cloud Stream RocketMQ Binder

  • Message Bus: link nodes of a distributed system with Spring Cloud Bus RocketMQ

  • Distributed Transaction:support for distributed transaction solution with high performance and ease of use with Seata

  • Dubbo RPC:extend the communication protocols of Spring Cloud service-to-service calls by Apache Dubbo RPC

Spring Cloud Alibaba为分布式应用开发提供一站式解决方案。它包含了开发分布式应用程序所需的所有组件,使您能够轻松地使用Spring Cloud开发应用程序。

有了Spring Cloud Alibaba,你只需要添加一些注释和少量的配置,就可以把Spring Cloud的应用和阿里巴巴的分布式解决方案连接起来,用阿里巴巴中间件搭建分布式应用系统。

特性

1、流量控制和服务退化:阿里巴巴哨兵的流量控制、断路和系统自适应保护

2、服务注册和发现:可以向Alibaba Nacos注册实例,客户端可以使用spring管理的bean发现实例。通过Spring Cloud Netflix支持客户端负载均衡器Ribbon

3、分布式配置:使用阿里巴巴Nacos作为数据存储

4、事件驱动:构建高度可伸缩的事件驱动微服务,并与Spring Cloud Stream RocketMQ Binder连接

5、消息总线:使用Spring Cloud Bus RocketMQ连接分布式系统的节点

6、分布式事务:支持高性能、易用的Seata分布式事务解决方案

7、Dubbo RPC:通过Apache Dubbo RPC扩展Spring Cloud service-to-service调用的通信协议

2018 年 12 月12 日,Netflix 公司宣布 Spring Cloud Netflix 系列大部分组件都进入维护模式,不再添加新特性。因此各大互联网公司开始使用Spring Cloud 的第二代实现:Spring Cloud Alibaba

1、Spring Cloud Alibaba 组件

Spring Cloud Alibaba 包含了多种开发分布式微服务系统的必需组件

1、Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。

2、Sentinel:阿里巴巴开源产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性。

3、RocketMQ:Apache RocketMQ 是一款基于Java 的高性能、高吞吐量的分布式消息和流计算平台。

4、Dubbo:Apache Dubbo 是一款高性能的 Java RPC 框架。

5、Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

6、Alibaba Cloud OSS:阿里云对象存储服务器(Object Storage Service,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

7、Alibaba Cloud Schedulerx:阿里中间件团队开发的一款分布式调度产品,支持周期性的任务与固定时间点触发任务。

通过 Spring Cloud Alibaba 的这些组件,我们只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统 

2、Spring Cloud Alibaba 版本依赖

1、SpringCloud和SpringBoot关联

SpringBoot专注于快速方便的开发单个个体微服务。

SpringCloud是关注全 局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等集成服务。

SpringBoot专注于快速、方便的开发单个个体微服务, SpringCloud关注全局的服务治理框架

Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块

Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行

Spring Cloud 与 Spring Boot的兼容版本对应关系如下(参考自Spring Cloud 官网)

2、Spring Cloud、Spring Cloud Alibaba 以及 Spring Boot 之间版本依赖关系如下

注:刚开始博主在 Spring Cloud Alibaba 官方没有找到文档专门说明对应关系,加了一些官网技术群咨询;不过最近博主在GitHub上找到了版本说明,以及组件版本关系

官网文档:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

Spring Cloud Alibaba 版本Spring Cloud 版本Spring Boot 版本
2021.0.1.0Spring Cloud 2021.0.12.6.3
2021.1Spring Cloud 2020.0.12.4.2
2.2.8.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE
2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE
2.2.6.RELEASESpring Cloud Hoxton.SR92.3.2.RELEASE
2.1.4.RELEASESpring Cloud Greenwich.SR62.1.13.RELEASE
2.2.1.RELEASESpring Cloud Hoxton.SR32.2.5.RELEASE
2.2.0.RELEASESpring Cloud Hoxton.RELEASE2.2.X.RELEASE
2.1.2.RELEASESpring Cloud Greenwich2.1.X.RELEASE
2.0.4.RELEASE(停止维护,建议升级)Spring Cloud Finchley2.0.X.RELEASE
1.5.1.RELEASE(停止维护,建议升级)Spring Cloud Edgware1.5.X.RELEASE

 

3、Spring Cloud Alibaba 组件版本关系

官网文档:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

Spring Cloud Alibaba 下各组件版本关系如下

Spring Cloud Alibaba 版本Sentinel 版本Nacos 版本RocketMQ 版本Dubbo 版本Seata 版本

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

1.4.2

2.2.7.RELEASE1.8.12.0.34.6.12.7.131.3.0
2.2.6.RELEASE1.8.11.4.24.4.02.7.81.3.0
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.0
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.8.01.3.34.4.02.7.81.3.0
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.2.14.4.02.7.61.2.0
2.2.0.RELEASE1.7.11.1.44.4.02.7.4.1 1.0.0
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE1.7.01.1.44.4.02.7.30.9.0
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE1.6.31.1.14.4.02.7.30.7.1

4、Spring Cloud Alibaba 和 Spring Cloud Netflix组件对比

下表展示了 Spring Cloud 两代实现的组件对比

Spring Cloud 第一代实现(Netflix)状态Spring Cloud 第二代实现(Alibaba)状态
Ereka2.0 孵化失败Nacos Discovery性能更好,感知力更强
Ribbon停止更新,进入维护Spring Cloud LoadbalancerSpring Cloud 原生组件,用于代替 Ribbon 
Hystrix停止更新,进入维护Sentinel可视化配置,上手简单
Zuul停止更新,进入维护Spring Cloud Gateway性能为 Zuul 的 1.6 倍
Spring Cloud Config搭建过程复杂,约定过多,无可视化界面,上手难点大Nacos Config搭建过程简单,有可视化界面,配置管理更简单,容易上手

以上是关于SpringCloud - Spring Cloud Alibaba的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud总结29.Zuul的FallBack回退机制

基于consul的服务注册(含踩坑过程)

Oauth2.0 整合springCloud的Zuul 解决关键BUG 报错信息:Principal must not be null

Spring Cloud Alibaba - 02 SpringCloud SpringCloud Alibaba SpringBoot的生产版本选择

Spring Cloud

spring cloud 服务注册、发现了解