1.什么是SpringCloud
1.1. 微服务是什么
想要知道什么是SpringCloud首先要知道什么是微服务。
微服务(Microservices)是一种软件架构风格,其中一个应用程序被分解为一组小型、独立的服务,每个服务都专注于执行一个特定的业务功能。这些服务之间通过轻量级的通信机制进行通信,例如使用REST API或消息传递机制等。微服务的目标是通过将单个应用程序分解为更小的、可独立部署和维护的组件,使软件开发和交付更加灵活和可靠。它们还有助于在大型组织中实现更快的创新、更高的可扩展性和更好的可维护性。
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
面向服务:微服务对外暴露业务接口
自治:团队独立、技术独立、数据独立、部署独立
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
1.2. SpringCloud是什么
Spring Cloud 是基于 Spring Boot 的一组开源框架,它提供了一套完整的解决方案,帮助开发人员构建和管理分布式系统,特别是微服务架构。Spring Cloud 主要提供了以下功能:
服务注册与发现:Spring Cloud 提供了服务注册中心,如 Eureka、Consul、ZooKeeper 等,服务可以注册到注册中心,其他服务可以通过注册中心来发现和调用服务。服务注册中心是微服务架构中的核心组件之一。它用于存储服务实例的地址信息,并提供查询服务实例的 API。Spring Cloud 提供了多种服务注册中心的实现,如 Eureka、Consul、ZooKeeper 等。开发人员可以根据自己的需求选择适合自己的服务注册中心。服务可以通过注册中心来发现和调用其他服务。
负载均衡:Spring Cloud 集成了多种负载均衡算法,可以通过负载均衡器来实现服务请求的分发。负载均衡器是微服务架构中的另一个核心组件。它可以通过算法来实现服务请求的分发,从而达到均衡负载的目的。Spring Cloud 集成了多种负载均衡算法,如轮询、随机、最小连接数等,可以通过 Ribbon 来实现服务请求的负载均衡。
断路器:Spring Cloud 集成了断路器模式,可以通过 Hystrix 来实现服务的熔断和降级,保障服务的可靠性和稳定性。在分布式系统中,如果某个服务出现故障或者网络异常,会导致服务请求超时或者失败。为了保障服务的可靠性和稳定性,需要引入断路器模式。Spring Cloud 集成了 Hystrix,可以实现服务的熔断和降级,保障服务的可用性。Hystrix 还提供了可视化的 Dashboard,可以查看服务的熔断和降级情况。
路由:Spring Cloud 提供了 Zuul 网关,可以通过网关来实现请求的转发和路由。在微服务架构中,通常会有多个服务,每个服务都有自己的 API。为了方便客户端调用服务,需要引入路由功能。Spring Cloud 提供了 Zuul 网关,可以实现请求的转发和路由。Zuul 还提供了多种过滤器,可以对请求进行鉴权、日志记录等操作。
在微服务架构中,服务的配置通常是分散在多个地方的,如代码、配置文件、环境变量等。为了方便管理配置,Spring Cloud 提供了 Config Server,可以集中管理配置文件,支持多种配置源,如 Git、SVN、本地文件等。开发人员可以通过 Config Client 来获取配置信息,还可以实现配置的动态刷新。
配置管理:Spring Cloud 提供了 Config Server,可以集中管理配置文件,动态刷新配置,支持多种配置源。
分布式追踪:Spring Cloud 集成了 Zipkin,可以实现分布式系统的链路追踪,帮助开发人员快速定位问题。在分布式系统中,如果出现问题,往往需要跨越多个服务来进行调试。为了方便快速定位问题,需要引入分布式追踪功能。Spring Cloud 集成了 Zipkin,可以实现分布式系统的链路追踪,可以查看服务请求的调用情况和耗时情况。
除了以上功能,Spring Cloud 还提供了多种组件,如 Feign、Ribbon、Sleuth、Spring Cloud Bus 等,可以让开发人员更加方便地构建和管理分布式系统。Spring Cloud 还支持多种云平台和基础设施,如 Kubernetes、Docker、OpenStack 等,可以方便地进行部署和扩展。总之,Spring Cloud 是构建分布式系统的首选框架之一,具有丰富的功能和易用性,可以大大提高开发效率和系统可靠性。
1.3. Spring Cloud 和 Spring Boot的关系
Spring Cloud 是基于 Spring Boot 构建的微服务框架。Spring Boot 是一种快速构建独立 Spring 应用程序的框架,它提供了丰富的开箱即用的功能和插件,帮助开发人员快速构建独立的、可部署的 Spring 应用程序。
Spring Cloud 则是为开发人员提供了一整套的微服务架构解决方案,包括服务注册与发现、负载均衡、断路器、路由、配置管理、分布式追踪等功能。Spring Cloud 基于 Spring Boot 框架,使用 Spring Boot 的特性来快速构建微服务应用程序。
简而言之,Spring Cloud 是建立在 Spring Boot 之上的微服务框架,它提供了丰富的分布式应用程序开发工具和服务组件,使得开发人员可以更加方便快捷地构建、部署和管理分布式应用程序
2. Spring Cloud Alibaba概述
2.1. Netflix公司项目进入维护模式
有了spring cloud这个微服务的框架,为什么又要使用spring cloud alibaba这个框架了?最重要的原因在于spring cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础上做了一层封装。然而Netflix的众多组件在2020年停止维护,所以急需其他的一些替代产品,也就是spring cloud alibaba,目前正处于蓬勃发展的态式,马老师左手双十一,右手阿里开源组件,不仅占据了程序员的购物车,还要攻占大家的开发工具。
2.2. Spring Cloud Alibaba是什么?
Spring Cloud Alibaba 是一个基于 Spring Cloud 的微服务框架,它提供了一整套的微服务解决方案,包括服务注册与发现、配置管理、服务熔断、路由、消息总线、分布式事务等功能。
Spring Cloud Alibaba 是由阿里巴巴集团开发并维护的,它结合了 Spring Cloud 和 Alibaba 的优势,提供了一系列的阿里巴巴产品化解决方案,如 Nacos 服务注册中心、Sentinel 服务熔断降级框架、Dubbo RPC 框架等。
Spring Cloud Alibaba 在 Spring Cloud 基础上增加了对阿里巴巴生态产品的支持,为开发人员提供了一套完整的解决方案,方便开发人员快速构建分布式应用程序。此外,Spring Cloud Alibaba 也与 Spring Boot 兼容,可以和 Spring Boot 无缝集成,提供了更加方便的使用体验。
总之,Spring Cloud Alibaba 是一个集成了阿里巴巴生态产品的微服务框架,它为开发人员提供了一套完整的微服务解决方案,帮助开发人员快速构建分布式应用程序。
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
作为 Spring Cloud 体系下的新实现,Spring Cloud Alibaba 跟Spring Cloud官方的组件或其它的第三方实现如 Netflix, Consul,Zookeeper 等对比,具备了更多的功能:
2.3. Spring Boot和Spring Cloud的版本号说明
版本号说明
Spring Cloud是基于Springboot的对应版本号开发的,属于依赖的关系,所以不能都选用最新版本
Spring Boot和Spring Cloud的版本号如下:
Spring Boot版本号:https://spring.io/projects/spring-boot#learn
Spring Cloud版本号:https://spring.io/projects/spring-cloud#learn
Spring Cloud Alibaba版本号:https://spring.io/projects/spring-cloud-alibaba#learn
下表为按时间顺序发布的 Spring Cloud Alibaba 以及对应的适配 Spring Cloud 和 Spring Boot 版本关系: