Spring Cloud - Eureka Client
微服务架构 —— Eureka Client
1. 核心理论:什么是 Eureka Client?
Eureka Client 是一个嵌入在微服务中的 Java 客户端,它负责处理与 Eureka Server 的所有交互。它使得一个普通的 Spring Boot 应用能够转变为一个“可被治理”的微服务。
-
核心职责:
- 服务注册 (Register): 应用启动时,向 Eureka Server 注册自己的信息(服务名、IP、端口等)。
- 心跳续约 (Renew): 定期向 Eureka Server 发送心跳,告知“我还活着”。
- 服务发现 (Discovery): 从 Eureka Server 拉取服务注册表的副本,并缓存到本地。这使得客户端可以从本地快速找到其他服务的地址。
- 服务下线 (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. 运行与验证
- 先启动
EurekaServerApplication。 - 再启动
EurekaClientApplication。 - 等待约 30 秒(Eureka 默认的注册和心跳周期),然后刷新 Eureka Server 的管理界面 (
http://localhost:8761)。 - 在界面的 “Instances currently registered with Eureka” 部分,你应该能看到我们刚刚启动的
USER-SERVICE,状态为UP。
- 效果: 这表明我们的
user-service微服务已经成功地将自己注册到了 Eureka 注册中心,现在它可以被网络中的其他服务所发现了。

浙公网安备 33010602011771号