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 调用。

‌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. 典型协作流程‌

  1. ‌使用 Spring Boot 开发单个微服务‌

    • 通过 spring-boot-starter-web 创建 REST API。
    • 使用 spring-boot-starter-data-jpa 集成数据库。
    • 通过 @SpringBootApplication 启动独立应用。
  2. ‌使用 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
posted on 2025-04-11 14:23  Hi Martin  阅读(50)  评论(0)    收藏  举报