Spring Cloud - 第一个Eureka应用 - Day02

在微服务架构中,服务注册与发现是至关重要的环节,而Spring Cloud提供了Eureka作为一个服务发现的解决方案。Eureka是一个RESTful服务,其主要功能是为服务提供注册与发现的能力。本文将介绍如何搭建一个简单的Eureka应用,并在其中实现服务的注册与发现。

一、环境准备

在开始之前,请确保你已经安装了以下环境: 1. JDK 1.8 或更高版本 2. Maven 3. 一个IDE(如IntelliJ IDEA或Eclipse)

二、创建Eureka服务

  1. 创建项目

你可以使用Spring Initializr(https://start.spring.io/)快速生成一个Spring Boot项目。在生成配置中,可以选择以下设置: - 项目:Maven Project - 语言:Java - Spring Boot:选择最新稳定版本 - 项目元数据:根据个人需求填写 - 依赖项:选择Eureka Server

生成完成后,下载项目并解压缩,然后在IDE中导入该项目。

  1. 修改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>
  1. 配置应用

在项目中创建一个配置类,并在主应用程序类中添加@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);
    }
}
  1. 配置文件

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的强大功能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部