Spring Boot - Eureka 服务

Eureka 服务是一个包含所有客户端服务应用程序信息的应用程序。 每个微服务都会注册到 Eureka 服务,Eureka 服务知道每个端口和 IP 地址上运行的所有客户端应用程序。 Eureka Server 也称为发现服务。

在本章中,我们将详细了解如何构建 Eureka 服务。


搭建 Eureka 服务

Eureka 服务附带 Spring Cloud 的捆绑包。 为此,我们需要开发 Eureka 服务并在默认端口 8761 上运行它。

访问 Spring Initializer 主页 https://start.spring.io/ 并下载具有 Eureka 服务依赖项的 Spring Boot 项目。 它显示在下面的屏幕截图中 −

搭建 Eureka 服务

在主 Spring Boot Application 类文件中下载项目后,我们需要添加 @EnableEurekaServer 注解。 @EnableEurekaServer 注解用于使您的 Spring Boot 应用程序充当 Eureka Server。

主 Spring Boot 应用程序类文件的代码如下所示 −

package com.tutorialspoint.eurekaserver;

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaserverApplication {
   public static void main(String[] args) {
      SpringApplication.run(EurekaserverApplication.class, args);
   }
}

确保在构建配置文件中添加了 Spring cloud Eureka 服务依赖项。

Maven 用户依赖的代码如下所示 −

<dependency>
<groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

Gradle 用户依赖的代码如下 −

compile('org.springframework.cloud:spring-cloud-starter-eureka-server')

完整的构建配置文件如下 −

Maven 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.tutorialspoint</groupId>
   <artifactId>eurekaserver</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>eurekaserver</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.9.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-eureka-server</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
   
</project>

Gradle – build.gradle

buildscript {
   ext {
      springBootVersion = '1.5.9.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
ext {
   springCloudVersion = 'Edgware.RELEASE'
}
dependencies {
   compile('org.springframework.cloud:spring-cloud-starter-eureka-server')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
   imports {
      mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
   }
}

默认情况下,Eureka Server 将自己注册到发现中。 您应该将以下给定配置添加到您的 application.properties 文件或 application.yml 文件中。

application.properties 文件如下 −

eureka.client.registerWithEureka = false
eureka.client.fetchRegistry = false
server.port = 8761

The application.yml file is given below −

eureka:
   client:
      registerWithEureka: false
      fetchRegistry: false
server:
   port: 8761

现在,您可以创建一个可执行的 JAR 文件,并使用如下所示的 Maven 或 Gradle 命令运行 Spring Boot 应用程序 −

对于 Maven,使用如下所示的命令 −

mvn clean install

在“BUILD SUCCESS”之后,您可以在目标目录下找到 JAR 文件。

对于 Gradle,您可以使用如下所示的命令 −

gradle clean build

在“BUILD SUCCESSFUL”之后,您可以在 build/libs 目录下找到 JAR 文件。

现在,使用以下命令运行 JAR 文件 −

 java –jar <JARFILE> 

可以发现应用已经在Tomcat的8761端口启动了,如下图 −

应用程序在 Tomcat 端口 8761 上启动

现在,在您的 Web 浏览器中点击 URL http://localhost:8761/,您可以找到运行在 8761 端口上的 Eureka Server,如下所示 −

运行在 8761 端口的 Eureka 服务