基础概念与服务器搭建
2025/9/17大约 4 分钟
Eureka入门:基础概念与服务器搭建
前置知识
在开始本教程之前,建议您具备以下基础知识:
- Java基础和Spring Boot开发经验
- 微服务架构基本概念
- Maven项目管理工具使用经验
- RESTful API设计理解
什么是Eureka?
Eureka是Netflix开发的服务发现框架,Spring Cloud将它集成在自己的子项目Spring Cloud Netflix中,以实现微服务架构中的服务治理功能。主要特点:
- 服务注册与发现:自动注册服务实例并维护可用服务列表
- 心跳检测:定期检查服务健康状态
- 服务下线:优雅处理服务实例的关闭
- 自我保护:防止服务误删除的保护机制
核心功能
graph LR
A[服务提供者] -->|注册| B[Eureka Server]
C[服务消费者] -->|获取服务| B
B -->|心跳检测| A
B -->|服务列表| C
- 服务注册:服务提供者启动时向Eureka Server注册自己的信息
- 服务续约:定期发送心跳包保持注册状态
- 服务发现:消费者从Eureka Server获取服务列表
- 服务下线:服务提供者主动通知下线或心跳超时自动下线
工作原理
基本架构
graph TD
A[Eureka Server] -->|复制数据| B[Eureka Server]
C[Service A] -->|注册/心跳| A
D[Service B] -->|注册/心跳| B
E[Service C] -->|获取注册表| A
E -->|调用服务| C
E -->|调用服务| D
服务注册过程
- 服务启动:应用启动时,Eureka Client向Server发起注册请求
- 信息存储:Server将服务信息存入注册表
- 状态维护:Client定期发送心跳包更新状态
- 失效剔除:Server定期清理无心跳服务
搭建Eureka Server
1. 创建项目
使用Spring Initializr创建一个新的Spring Boot项目,添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2. 配置文件
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
# 不向自己注册
register-with-eureka: false
# 不从自己获取服务
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3. 启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
基础配置说明
1. 服务端配置
eureka:
server:
# 自我保护阈值
renewal-percent-threshold: 0.85
# 自我保护开关
enable-self-preservation: true
# 清理无效节点间隔(毫秒)
eviction-interval-timer-in-ms: 60000
2. 实例配置
eureka:
instance:
# 实例ID
instance-id: ${spring.cloud.client.ip-address}:${server.port}
# 优先使用IP地址
prefer-ip-address: true
# 心跳间隔(秒)
lease-renewal-interval-in-seconds: 30
# 失效时间(秒)
lease-expiration-duration-in-seconds: 90
实战示例
1. 基本服务注册
@SpringBootApplication
@EnableEurekaClient
@RestController
@Slf4j
public class ServiceApplication {
@Value("${server.port}")
private String port;
@GetMapping("/hello")
public String hello() {
return "Hello from port: " + port;
}
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
}
2. 配置文件
server:
port: 8001
spring:
application:
name: demo-service
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
最佳实践
注意事项
配置管理
- 使用环境变量或配置中心
- 区分开发和生产环境
- 避免硬编码配置
安全考虑
- 启用安全认证
- 使用HTTPS
- 限制访问IP
性能优化
- 合理设置心跳间隔
- 适当配置超时时间
- 启用压缩传输
常见问题
1. Eureka Server启动报错?
可能原因和解决方案:
- 端口被占用
netstat -ano | findstr 8761
- 依赖版本不匹配
<properties> <spring-cloud.version>2021.0.8</spring-cloud.version> </properties>
- 配置文件错误
- 检查yaml格式
- 验证配置项名称
2. 服务注册失败?
排查步骤:
- 检查网络连接
- 验证配置地址
- 查看注册日志
- 确认依赖版本
总结
本文介绍了Eureka的:
- ✅ 基本概念:服务注册与发现的核心功能
- ✅ 工作原理:服务注册、心跳检测等机制
- ✅ 服务端配置:基础配置项说明
- ✅ 实战示例:完整的服务端搭建过程
- ✅ 最佳实践:配置、安全、性能优化建议
下一步学习
- 了解Eureka Client的详细配置
- 探索服务发现与负载均衡
- 学习高可用集群部署