Spring Cloud - Eureka Client

微服务架构 —— Eureka Client

1. 核心理论:什么是 Eureka Client?

Eureka Client 是一个嵌入在微服务中的 Java 客户端,它负责处理与 Eureka Server 的所有交互。它使得一个普通的 Spring Boot 应用能够转变为一个“可被治理”的微服务。

  • 核心职责:

    1. 服务注册 (Register): 应用启动时,向 Eureka Server 注册自己的信息(服务名、IP、端口等)。
    2. 心跳续约 (Renew): 定期向 Eureka Server 发送心跳,告知“我还活着”。
    3. 服务发现 (Discovery): 从 Eureka Server 拉取服务注册表的副本,并缓存到本地。这使得客户端可以从本地快速找到其他服务的地址。
    4. 服务下线 (Cancel): 应用关闭时,向 Eureka Server 发送一个下线请求,将自己从服务列表中移除。
  • 生活比喻: Eureka Client 就像你手机里的“通讯录同步助手”。

    • 注册: 你换了新手机号,这个助手会自动把你的新号码上传到云端通讯录(Eureka Server)。
    • 续约: 助手会定期联网,检查你的号码是否还在正常使用。
    • 发现: 助手会把云端的所有联系人列表下载并缓存到你的手机里,这样你找人时就不用每次都去云端查了。
    • 下线: 你注销了手机号,助手会自动通知云端,把这个号码删掉。

2. 代码示例:创建一个 Eureka Client

2.1 添加依赖 (pom.xml)

<!-- Eureka Client 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- Web 依赖,用于提供 REST 接口 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2 编写主启动类

package com.study.eurekaclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient // 声明这是一个可以被发现的客户端
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

注意: @EnableDiscoveryClient 在较新的 Spring Cloud 版本中是可选的,只要引入了 starter 依赖,应用就会自动注册。但为了代码可读性和向后兼容,推荐加上。

2.3 编写配置文件 (application.yml)

这是配置 Eureka Client 的关键。

server:
  port: 8080 # 为该服务指定一个端口

spring:
  application:
    name: user-service # 指定服务的名称,这是服务之间识别的唯一标识

eureka:
  client:
    service-url:
      # 指定 Eureka Server 的地址
      defaultZone: http://localhost:8761/eureka/
  instance:
    # 实例ID,可以自定义,默认为 主机名:服务名:端口号
    instance-id: ${spring.application.name}:${server.port}
    # 将自己的IP地址注册到Eureka Server,默认为false(注册主机名)
    prefer-ip-address: true

2.4 创建一个测试 Controller

为了验证服务是否成功注册,我们创建一个简单的 Controller。

package com.study.eurekaclient;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello from User Service!";
    }
}

3. 运行与验证

  1. 先启动 EurekaServerApplication
  2. 再启动 EurekaClientApplication
  3. 等待约 30 秒(Eureka 默认的注册和心跳周期),然后刷新 Eureka Server 的管理界面 (http://localhost:8761)。
  4. 在界面的 “Instances currently registered with Eureka” 部分,你应该能看到我们刚刚启动的 USER-SERVICE,状态为 UP
  • 效果: 这表明我们的 user-service 微服务已经成功地将自己注册到了 Eureka 注册中心,现在它可以被网络中的其他服务所发现了。
posted @ 2026-01-21 16:26  我是刘瘦瘦  阅读(3)  评论(0)    收藏  举报