Spring Boot 教程:Eureka 服務器
【注】本文譯自: https://www.tutorialspoint.com/spring_boot/spring_boot_eureka_server.htm

? ? Eureka 服務器是一個應用,它包含所有客戶端服務應用的信息。每個微服務都會注冊到 Eureka 服務器并且 Eureka 服務器知道所有客戶端應用的端口和 IP 地址。Eureka ?服務器也被稱為發(fā)現(xiàn)服務器。
? ? 本文將帶你學習如何搭建 Eureka 服務器。
搭建 Eureka 服務器
? ??Eureka 服務器與 Spring Cloud 打包發(fā)布。基于此,我們需要開發(fā) Eureka 服務器并將它運行于缺省的 8761 端口上。
? ? 訪問?Spring 初始化器主頁?https://start.spring.io/?并下載?Spring Boot 工程的 Eureka 服務器依賴。如下圖所示:

? ?工程下載之后,在主?Spring Boot 應用類文件中,我們要加上 @EnableEurekaServer 注解。@EnableEurekaServer 注解可使你的 Spring Boot 應用用作 Eureka 服務器。
? ?主?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);
???}
}
? ?確保你的構建配置文件中已經(jīng)加入了?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 服務器會將自身注冊到發(fā)現(xiàn)中。你應當加入以下配置到 application.properties 或 application.yml 文件中:
application.properties 文件如下所示:
eureka.client.registerWithEureka?=?false
eureka.client.fetchRegistry?=?false
server.port?=?8761
? ?application.yml 文件如下所示:
eureka:
??client:
?????registerWithEureka:?false
?????fetchRegistry:?false
server:
??port:?8761
? ?現(xiàn)在可以使用 Maven 或 Gradle 命令創(chuàng)建可執(zhí)行?executable JAR 文件并運行 Spring Boot 應用了:
? ?Maven 命令如下:
mvn?clean?install
? ?在 “BUILD SUCCESS” 之后,你可以在 target 目錄下找到 JAR 文件。
? ?Gradle 可以使用以下命令:
gradle?clean?build
? ?在 “BUILD SUCCESSFUL” 之后,你可以在?build/libs 目錄下找到?JAR 文件。
? ?使用以下命令運行 JAR 文件:
java?–jar?<JARFILE>
? ? 應用已在?Tomcat? 8761?端口啟動,如下圖所示:

? ?接下來,在 web 瀏覽器中單擊 URL?http://localhost:8761/,可以發(fā)現(xiàn)?Eureka 服務器已經(jīng)運行在 8761 端口,如下所示:
