Eureka 是 Netflix 开发的服务发现组件。以下是 Eureka 的使用方法:
一、引入依赖
如果使用 Maven 构建项目,在项目的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
二、配置 Eureka Server
- 创建一个 Spring Boot 应用,并在主类上添加
@EnableEurekaServer
注解,标记这是一个 Eureka 服务器。 - 在 application.properties 或 application.yml 文件中进行配置,例如:
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
这里设置 Eureka 服务器在端口 8761 上运行,并且不向其他 Eureka 服务器注册自己,也不从其他服务器获取注册信息。
三、启动 Eureka Server
运行带有@EnableEurekaServer
注解的主类,启动 Eureka 服务器。
四、服务提供者注册到 Eureka
- 对于服务提供者项目,添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 在服务提供者的配置文件中添加 Eureka 相关配置:
server.port=8080
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
这里设置服务提供者在端口 8080 上运行,并向本地的 Eureka 服务器(端口 8761)注册。
3. 在服务提供者的启动类上添加@EnableDiscoveryClient
注解,使其能够被 Eureka 发现。
五、服务消费者从 Eureka 获取服务
- 服务消费者项目也添加
spring-cloud-starter-netflix-eureka-client
依赖。 - 在配置文件中配置 Eureka 服务器地址。
- 在服务消费者的代码中,可以使用
@LoadBalanced
注解修饰的RestTemplate
或使用FeignClient
来调用其他服务。这些工具会从 Eureka 服务器获取服务列表,并进行负载均衡调用。
例如,使用@LoadBalanced
修饰的RestTemplate
:
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
然后在服务消费者的业务代码中:
@Autowired
private RestTemplate restTemplate;
public void callService() {
String response = restTemplate.getForObject("http://service-provider-url/api/endpoint", String.class);
// 处理响应
}
使用 Eureka 可以方便地实现服务的注册与发现,提高系统的可扩展性和可靠性。在实际应用中,还可以根据需要进行更多的配置和优化。