1. 定位与目标
• Spring Boot
• 简化单体应用开发:通过自动配置、内嵌服务器和 Starter 依赖,快速构建独立运行的 Spring 应用(单体或简单微服务)。
• 核心功能:依赖管理、简化配置、快速启动。
• Spring Cloud
• 构建分布式系统:专注于微服务架构的治理和协调,解决分布式系统中的复杂问题(如服务发现、配置中心、熔断器等)。
• 核心功能:分布式系统基础设施(如服务注册、网关、链路追踪)。
2. 核心区别
| 特性 | Spring Boot | Spring Cloud |
|---|---|---|
| 适用场景 | 单体应用、简单微服务 | 复杂的分布式系统(微服务集群) |
| 核心目标 | 简化开发、快速启动 | 解决分布式系统的治理问题(如容错、配置同步等) |
| 依赖关系 | 基于 Spring Framework | 基于 Spring Boot,整合 Netflix、Alibaba 等生态 |
| 典型组件 | Starter 依赖、Actuator | Eureka(服务注册)、Zuul(网关)、Hystrix(熔断) |
| 配置管理 | application.properties 文件 | 集中式配置(如 Spring Cloud Config、Nacos) |
| 服务通信 | 需手动实现 REST 或 Feign | 提供 OpenFeign 等声明式客户端工具 |
| 部署方式 | 内嵌服务器(JAR 包直接运行) | 依赖服务注册中心、配置中心等分布式组件 |
3. 典型使用场景
Spring Boot 场景
• 开发一个独立的用户管理系统(单体应用)。
• 快速构建一个提供 REST API 的简单服务。
• 需要内嵌 Tomcat、自动配置数据源的场景。
Spring Cloud 场景
• 构建电商平台,拆分成订单服务、库存服务、支付服务等微服务。
• 需要统一管理所有微服务的配置(如数据库地址、密钥)。
• 实现服务之间的负载均衡、熔断降级(防止雪崩效应)。
4. 核心组件对比
Spring Boot 核心组件
• spring-boot-starter-*:简化依赖管理(如 spring-boot-starter-web 包含 Web 开发所需依赖)。
• Spring Boot Actuator:提供应用监控和管理端点(如健康检查、指标收集)。
• 内嵌服务器(Tomcat/Jetty)。
Spring Cloud 核心组件
• 服务注册与发现:Eureka、Nacos、Consul。
• 服务调用:OpenFeign(声明式 REST 客户端)、Ribbon(负载均衡)。
• 熔断与限流:Hystrix、Sentinel。
• 配置中心:Spring Cloud Config、Nacos。
• API 网关:Spring Cloud Gateway、Zuul。
• 分布式追踪:Sleuth + Zipkin。
5. 两者关系
• Spring Cloud 基于 Spring Boot:Spring Cloud 的每个微服务模块都是一个独立的 Spring Boot 应用。
• 互补关系:
• Spring Boot 负责 单个服务 的快速开发和运行。
• Spring Cloud 负责 多个服务 之间的协调、治理和通信。
6. 总结
• Spring Boot 是 开发工具,用于快速构建单个应用。
• Spring Cloud 是 分布式系统框架,用于管理微服务集群的复杂性。
• 实际开发中:
• 用 Spring Boot 开发每个独立的微服务。
• 用 Spring Cloud 整合这些微服务,提供分布式能力(如注册中心、熔断器等)。
示例架构:
[微服务A(Spring Boot)] → [Eureka(服务注册)]
[微服务B(Spring Boot)] → [Spring Cloud Gateway(路由)]
[微服务C(Spring Boot)] → [Hystrix(熔断)]