【Spring Cloud】微服务学习

发布于:2025-07-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

Spring Cloud 简介

Spring Cloud 是基于 Spring Boot 实现的微服务架构开发工具集。它为微服务系统提供了配置管理、服务注册与发现、负载均衡、断路器、智能路由、微代理、控制总线等组件的支持,使开发者能够快速构建分布式系统。

Spring Cloud 是一整套解决方案,其核心理念是“关注业务、抽象技术”。


一,核心组件及原理

Eureka

Eureka 是 Netflix 提供的服务注册与发现组件。
• Eureka Server:服务注册中心,所有服务实例向其注册。
• Eureka Client:服务提供者和消费者均为客户端,向 Eureka 注册或拉取注册信息。

原理:
• 服务提供者启动后将自身信息(服务名称、地址、端口等)注册到 Eureka。
• 服务消费者通过 Eureka 获取其他服务的地址并发起调用。

优点:
• 支持客户端负载均衡。
• 支持服务实例健康检查。


Consul

Consul 是 HashiCorp 开发的一个支持多数据中心的服务网格工具,提供服务注册、服务发现、配置管理等功能。

特点:
• 支持健康检查机制。
• 提供 Key/Value 配置存储。
• 支持 HTTP 和 DNS 协议查询服务。

和 Eureka 的区别:

特性 Eureka Consul
健康检查 客户端上报 服务端主动检查
配置管理 不支持 支持 KV 存储
数据一致性 AP(可用+分区) CP(一致性+分区)
UI 界面 简洁 功能全面


Ribbon(已被弃用,推荐用 Spring Cloud LoadBalancer)

Ribbon 是 Netflix 开源的客户端负载均衡器,集成在 Feign 和 RestTemplate 中。

原理:
• 启动时从注册中心拉取服务清单,缓存到本地。
• 每次请求根据负载均衡算法(轮询、随机、权重)选择一个服务实例。

替代方案:
Spring Cloud LoadBalancer 已替代 Ribbon,具有更强的扩展性。


Feign

Feign 是一个声明式 HTTP 客户端,结合 Eureka 和 Ribbon 可实现负载均衡和服务调用。

特性:
• 通过接口 + 注解定义 HTTP 请求。
• 集成 Ribbon 实现负载均衡。
• 集成 Hystrix 实现容错机制(Spring Cloud 2020 之后建议用 Resilience4j)。

使用方式:

@FeignClient(“user-service”)
public interface UserClient {
@GetMapping(“/user/{id}”)
User getUserById(@PathVariable(“id”) Long id);
}


二,使用 Spring Initializr 创建 Spring Cloud 项目

步骤:

  1. 打开 https://start.spring.io/
  2. 选择如下配置:
    • Project: Maven / Gradle
    • Language: Java
    • Spring Boot Version: 建议使用 2.6.x 及以下兼容旧版 Spring Cloud(或 3.x 以上配合 Spring Cloud 2022+)
    • Dependencies:
    • Spring Web
    • Spring Boot DevTools
    • Eureka Discovery Client
    • Spring Cloud OpenFeign
    • Spring Cloud Config Client(可选)
  3. 点击 Generate 生成项目并导入 IDE(如 IntelliJ IDEA)

1,服务注册中心配置

创建一个 eureka-server 项目:

  • 添加依赖(pom.xml)
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • 配置 application.yml
server:
  port: 8761

spr

网站公告

今日签到

点亮在社区的每一天
去签到