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相关组件帮助这些服务发现彼此、分配请求、管理配置,并在服务故障时进行容错处理。

ba2b905c91f037bcbeec73530e304684.png

3.Spring Cloud常见组件及其作用

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