Spring Boot vs Spring Cloud
Spring Boot主要解决单个应用如何快速开发和运行的问题,Spring Cloud主要解决多个微服务如何协同工作和治理的问题。
1.核心区别
Spring Boot应用开发框架
- 简化Spring应用的配置、开发和部署,内置Web服务器,提供自动配置和Starter依赖。
Spring Cloud微服务治理框架
- 基于Spring Boot等技术构建分布式系统,提供服务发现、配置管理、负载均衡、熔断等能力。
| 对比维度 | Spring Boot | Spring Cloud |
|---|---|---|
| 核心目标 | 快速开发和运行应用 | 管理和协调多个服务 |
| 主要解决的问题 | 应用如何搭建、启动和运行 | 服务之间如何通信、发现和容错 |
| 应用规模 | 单体应用或微服务中的单个服务 | 多个相互协作的微服务 |
| 服务注册与发现 | 不直接提供完整的微服务注册发现体系 | 可集成Eureka、Consul等 |
| 负载均衡 | 可配合相关组件实现 | 可集成Spring Cloud LoadBalancer |
| 配置管理 | 支持本地及外部化配置 | 可集成Spring Cloud Config等 |
| 容错与熔断 | 需引入相关组件 | 可集成Resilience4j等方案 |
| 能否单独使用 | 可以 | 通常搭配Spring Boot等技术使用 |
注意:Spring Cloud并不是一个单独的微服务服务器,而是一组用于构建分布式系统的工具和规范。不同版本的Spring Cloud支持的组件也有所区别。
2.两者之间是什么关系?
理解为:Spring Boot负责构建每个微服务,Spring Cloud负责解决这些微服务之间的协作问题。
举个例子:开发一个电商系统。
- 订单服务使用Spring Boot开发,负责创建订单。
- 支付服务使用Spring Boot开发,负责处理支付。
- 库存服务使用Spring Boot开发,负责扣减库存。
- Spring Cloud相关组件帮助这些服务发现彼此、分配请求、管理配置,并在服务故障时进行容错处理。

3.Spring Cloud常见组件及其作用
| 组件或技术 | 主要作用 | 典型用途 |
|---|---|---|
| Spring Cloud Gateway | API网关 | 统一入口、路由、过滤 |
| Eureka / Consul | 服务注册与发现 | 服务动态定位 |
| Spring Cloud LoadBalancer | 客户端负载均衡 | 将请求分发给多个服务实例 |
| Spring Cloud Config | 配置中心 | 集中管理多服务配置 |
| OpenFeign | 声明式HTTP客户端 | 服务间调用 |
| Resilience4j | 容错与熔断 | 降低下游服务故障的影响 |
| Micrometer Tracing等 | 分布式链路追踪 | 排查跨服务请求问题 |