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

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

? ?工程下載之后,在主?Spring Boot 應(yīng)用類(lèi)文件中,我們要加上 @EnableEurekaServer 注解。@EnableEurekaServer 注解可使你的 Spring Boot 應(yīng)用用作 Eureka 服務(wù)器。
? ?主?Spring Boot 應(yīng)用類(lèi)文件如下所示:
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);
???}
}
? ?確保你的構(gòu)建配置文件中已經(jīng)加入了?Spring cloud Eureka 服務(wù)器依賴。
? ?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')
? ?完整的構(gòu)建配置代碼文件如下所示:
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 服務(wù)器會(huì)將自身注冊(cè)到發(fā)現(xiàn)中。你應(yīng)當(dāng)加入以下配置到 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 文件并運(yùn)行 Spring Boot 應(yīng)用了:
? ?Maven 命令如下:
mvn?clean?install
? ?在 “BUILD SUCCESS” 之后,你可以在 target 目錄下找到 JAR 文件。
? ?Gradle 可以使用以下命令:
gradle?clean?build
? ?在 “BUILD SUCCESSFUL” 之后,你可以在?build/libs 目錄下找到?JAR 文件。
? ?使用以下命令運(yùn)行 JAR 文件:
java?–jar?<JARFILE>
? ? 應(yīng)用已在?Tomcat? 8761?端口啟動(dòng),如下圖所示:

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