返回介绍

4.3 构建 Spring Eureka 服务

发布于 2025-04-22 21:54:06 字数 3482 浏览 0 评论 0 收藏

在本节中,我们将通过 Spring Boot 建立 Eureka 服务。与 Spring Cloud 配置服务一样,我们将从构建新的 Spring Boot 项目开始,并应用注解和配置来建立 Spring Cloud Eureka 服务。首先从 Maven 的 pom.xml [1] 开始。代码清单 4-1 展示了正在建立的 Spring Boot 项目所需的 Eureka 服务依赖项。

代码清单 4-1 添加依赖项到 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
→  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://
    →  maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.thoughtmechanix</groupId>
  <artifactId>eurekasvr</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Eureka Server</name>
  <description>Eureka Server demo project</description>

<!--没有显示使用 Spring Cloud Parent 的 Maven 定义-->
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka-server</artifactId>  ⇽---  告诉 Maven 构建包含 Eureka 库(其中包括 Ribbon)
    </dependency>
  </dependencies>

为了简洁,省略了 pom.xml 的其余部分
....
</project>

接着,需要创建 src/main/resources/application.yml 文件,在这里需要添加以独立模式(例如,集群中没有其他节点)运行 Eureka 服务所需的配置,如代码清单 4-2 所示。

代码清单 4-2 在 application.yml 文件中创建 Eureka 配置

server:
  port: 8761  ⇽---  Eureka 服务器将要监听的端口

eureka:
  client:
    registerWithEureka: false  ⇽---  不要使用 Eureka 服务进行注册
  fetchRegistry: false  ⇽---  不要在本地缓存注册表信息
  server:
    waitTimeInMsWhenSyncEmpty: 5  ⇽---  在服务器接收请求之前等待的初始时间

要设置的关键属性是 server.port 属性,它用于设置 Eureka 服务的默认端口。 eureka. client.registerWithEureka 属性会告知服务,在 Spring Boot Eureka 应用程序启动时不要通过 Eureka 服务注册,因为它本身就是 Eureka 服务。 eureka.client.fetchRegistry 属性设置为 false ,以便 Eureka 服务启动时,它不会尝试在本地缓存注册表信息。在运行 Eureka 客户端时,为了缓存通过 Eureka 注册的 Spring Boot 服务,我们需要更改 eureka.client.fetchRegistry 的值。

读者会注意到,最后一个属性 eureka.server.waitTimeInMsWhenSyncEmpty 被注释掉了。在本地测试服务时,读者应该取消注释此行,因为 Eureka 不会马上通告任何通过它注册的服务,默认情况下它会等待 5 min,让所有的服务都有机会在通告它们之前通过它来注册。进行本地测试时取消注释此行,将有助于加快 Eureka 服务启动和显示通过它注册服务所需的时间。

每次服务注册需要 30 s 的时间才能显示在 Eureka 服务中,因为 Eureka 需要从服务接收 3 次连续心跳包 ping,每次心跳包 ping 间隔 10 s,然后才能使用这个服务。在部署和测试服务时,要牢记这一点。

在建立 Eureka 服务时,需要进行的最后一项工作就是在启动 Eureka 服务的应用程序引导类中添加注解。对于 Eureka 服务,应用程序引导类可以在 src/main/java/com/thoughtmechanix/eurekasvr/ EurekaServerApplication.java 中找到。代码清单 4-3 展示了添加注解的位置。

代码清单 4-3 标注引导类以启用 Eureka 服务器

package com.thoughtmechanix.eurekasvr;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer  ⇽---  在 Spring 服务中启用 Eureka 服务器
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

只需要使用一个新的注解 @EnableEurekaServer ,就可以让我们的服务成为一个 Eureka 服务。此时,可以通过运行 mvn spring-boot:run 或运行 docker-compose (参见附录 A)来启动服务。一旦运行这个命令,Eureka 服务就会运行,此时没有任何服务注册在这个 Eureka 服务中。接下来,我们将构建组织服务,并通过这个 Eureka 服务注册。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。