spring boot与spring cloud
1. 核心定位
-
Spring Boot
- 目标:简化 Spring 应用的创建、配置和部署。
- 核心能力:提供约定大于配置的自动装配(Auto-Configuration)、内嵌服务器(如 Tomcat)、起步依赖(Starter Dependencies)等特性,让开发者快速构建独立、可运行的 Spring 应用。
- 适用场景:单体应用或微服务架构中的单个服务。
-
Spring Cloud
- 目标:为分布式系统提供一站式解决方案,解决微服务架构中的共性问题。
- 核心能力:提供服务发现(如 Eureka)、配置中心(如 Config Server)、负载均衡(如 Ribbon)、断路器(如 Hystrix)、API 网关(如 Gateway)等分布式系统所需的工具。
- 适用场景:多服务协作的微服务架构。
2. 依赖关系
-
Spring Boot 是 Spring Cloud 的基础
- Spring Cloud 的组件(如 Eureka、Feign、Zuul)均基于 Spring Boot 的自动配置和起步依赖机制实现。
- Spring Cloud 本身不提供独立的功能,而是通过集成第三方库(如 Netflix OSS、Consul、Zookeeper)并封装为 Spring 风格的组件,这些组件需要 Spring Boot 作为运行环境。
-
Spring Cloud 扩展了 Spring Boot
- Spring Cloud 在 Spring Boot 的基础上,增加了对分布式系统的支持。例如:
- 使用
@EnableEurekaServer
注解快速启动服务注册中心。 - 通过
@EnableFeignClients
简化服务间 HTTP 调用。
- 使用
- Spring Cloud 在 Spring Boot 的基础上,增加了对分布式系统的支持。例如:
3. 功能对比
功能 | Spring Boot | Spring Cloud |
---|---|---|
核心作用 | 快速构建单个服务 | 协调和管理多个服务 |
配置管理 | 通过 application.properties 或 YAML 配置 |
提供分布式配置中心(如 Spring Cloud Config) |
服务通信 | 支持 RESTful API(通过 Spring MVC) | 提供声明式客户端(如 OpenFeign)、负载均衡 |
服务发现 | 无内置支持 | 集成 Eureka、Consul、Zookeeper 等 |
容错机制 | 需手动实现 | 提供断路器(Hystrix/Sentinel)、限流等 |
API 网关 | 无内置支持 | 提供 Spring Cloud Gateway 或 Zuul |
4. 典型协作流程
-
使用 Spring Boot 开发单个微服务
- 通过
spring-boot-starter-web
创建 REST API。 - 使用
spring-boot-starter-data-jpa
集成数据库。 - 通过
@SpringBootApplication
启动独立应用。
- 通过
-
使用 Spring Cloud 连接多个微服务
- 通过 Spring Cloud Config 统一管理所有服务的配置。
- 通过 Eureka 注册服务,实现服务发现。
- 通过 OpenFeign + Ribbon 实现服务间的负载均衡调用。
- 通过 Hystrix 或 Sentinel 添加熔断机制,提高系统容错性。
- 通过 Spring Cloud Gateway 构建 API 网关,统一入口和路由。
5. 版本兼容性
- Spring Cloud 的版本命名(如 Hoxton、Greenwich)与 Spring Boot 的版本(如 2.3.x, 2.4.x)存在严格对应关系。
- 例如:
- Spring Cloud 2020.0.x (代号 Ilford) 需要 Spring Boot 2.4.x。
- Spring Cloud Hoxton.SR12 需要 Spring Boot 2.3.x。
- 开发时必须参考官方文档的版本兼容性矩阵:Spring Cloud Release Train。