Spring Cloud 简介

Spring Cloud 是一套基于 Spring Boot 的微服务架构工具集,用于快速构建分布式系统中的常见模式(如配置管理、服务发现、断路器、智能路由等)。它整合了 Netflix OSS、Consul、Zookeeper 等开源组件,提供了一套简化的开发体验。

核心组件

Spring Cloud Netflix

  • Eureka:服务注册与发现组件,用于微服务的动态上下线管理。
  • Ribbon:客户端负载均衡器,支持多种策略(如轮询、随机)。
  • Feign:声明式 REST 客户端,简化服务间 HTTP 调用。
  • Hystrix:熔断器,提供服务降级和故障隔离能力。

Spring Cloud Config
集中化配置管理,支持 Git、数据库等存储配置,动态刷新配置无需重启服务。

Spring Cloud Gateway
API 网关,替代 Zuul,支持动态路由、限流、鉴权等功能。

Spring Cloud Sleuth
分布式链路追踪,与 Zipkin 集成,用于监控微服务调用链。

快速入门示例

1. 创建 Eureka Server
添加依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

配置 application.yml

server:
  port: 8761
eureka:
  client:
    register-with-eureka: false # 不向自身注册
    fetch-registry: false

主类添加注解 @EnableEurekaServer

2. 创建服务提供者
注册到 Eureka:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

主类添加 @EnableDiscoveryClient

3. 使用 Feign 调用服务
定义接口:

@FeignClient(name = "service-provider")
public interface UserService {
    @GetMapping("/user/{id}")
    User getUser(@PathVariable Long id);
}

常见问题解决

服务注册失败

  • 检查 Eureka Server 地址是否正确。
  • 确认服务提供者的 spring.application.name 唯一。

配置中心动态刷新失效

  • 确保客户端添加 @RefreshScope 注解。
  • 调用 /actuator/refresh 端点触发刷新。

Hystrix 熔断不生效

  • 检查 @EnableCircuitBreaker 是否启用。
  • 确认 feign.hystrix.enabled=true(Feign 集成时需显式开启)。

版本选择建议

  • Spring Cloud 2022.x(代号 Kilburn)需搭配 Spring Boot 3.x。
  • Spring Cloud 2021.x(代号 Jubilee)兼容 Spring Boot 2.6.x~2.7.x。

参考资料

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐