Spring Cloud - 第一个Eureka应用 - Day02
在微服务架构中,服务注册与发现是至关重要的环节,而Spring Cloud提供了Eureka作为一个服务发现的解决方案。Eureka是一个RESTful服务,其主要功能是为服务提供注册与发现的能力。本文将介绍如何搭建一个简单的Eureka应用,并在其中实现服务的注册与发现。
一、环境准备
在开始之前,请确保你已经安装了以下环境: 1. JDK 1.8 或更高版本 2. Maven 3. 一个IDE(如IntelliJ IDEA或Eclipse)
二、创建Eureka服务
- 创建项目
你可以使用Spring Initializr(https://start.spring.io/)快速生成一个Spring Boot项目。在生成配置中,可以选择以下设置: - 项目:Maven Project - 语言:Java - Spring Boot:选择最新稳定版本 - 项目元数据:根据个人需求填写 - 依赖项:选择Eureka Server
生成完成后,下载项目并解压缩,然后在IDE中导入该项目。
- 修改
pom.xml
确保你的pom.xml
中包含Eureka Server相关的依赖(通常会自动添加):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
同时,你还需要引入Spring Cloud的版本控制。如果你使用的是Spring Cloud 2023.0.x版本,添加如下内容:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2023.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 配置应用
在项目中创建一个配置类,并在主应用程序类中添加@EnableEurekaServer
注解。例如,在DemoApplication
类中:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 配置文件
在src/main/resources/application.yml
中配置Eureka服务器的相关属性:
server:
port: 8761
eureka:
client:
register-with-eureka: false # 当前应用不会向Eureka注册
fetch-registry: false # 当前应用不会获取注册信息
server:
enable-self-preservation: false # 关闭自我保护
三、启动Eureka服务
在IDE中运行DemoApplication
,启动Eureka服务器。访问http://localhost:8761
,你就可以看到Eureka的管理界面,当前没有任何服务注册。
四、创建服务提供者
接下来,我们创建一个简单的服务提供者来测试Eureka的注册与发现。重复类似步骤来创建一个新的Spring Boot项目,并添加spring-cloud-starter-netflix-eureka-client
依赖。
在pom.xml
中添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
创建主应用程序类:
package com.example.serviceprovider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ServiceProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
}
配置文件 application.yml
:
spring:
application:
name: service-provider
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip: true
五、运行服务
启动服务提供者,在Eureka管理界面中,你应该能看到service-provider
服务已经注册成功。接下来,你可以通过编写一个简单的REST控制器为该服务提供一些接口,也可以在其他微服务中通过Eureka来获取该服务。
package com.example.serviceprovider.controller;
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 Service Provider!";
}
}
现在你可以使用Postman或浏览器访问http://localhost:8080/hello
来测试服务是否正常工作。
总结
通过以上步骤,我们搭建了一个基本的Eureka服务,并创建了一个服务提供者进行注册。Eureka使得微服务之间可以方便地进行注册与发现,极大地简化了微服务架构中的服务管理。接下来,你可以尝试添加多个服务或实现更复杂的服务发现机制,来进一步探索Spring Cloud与Eureka的强大功能。