父 pom
<packaging>pom</packaging>
<!-- 父工程是 2.1.0.RELEASE 版本的 boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<!-- 設(shè)置全局 SpringCloud 依賴版本為 F.RELEASE -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 設(shè)置全局依賴 SpringBoot、Web -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
建立 Eureka Server 子項(xiàng)目
在父pom中建立 Eureka Server 子項(xiàng)目 module:spring-cloud-eureka-server
pom 依賴
<!-- 父工程 -->
<parent>
<groupId>com.laiyy.gitee</groupId>
<artifactId>spring-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<!-- 引入 eureka server 依賴,注意不能少了 starter -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
啟動(dòng)類
@SpringBootApplication
@EnableEurekaServer // 開啟 Eureka Server
public class SpringCloudEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
}
}
配置文件
spring:
application:
name: eureka-server # 服務(wù)名稱
server:
port: 8761 # 服務(wù)端口
eureka:
instance:
hostname: localhost # host name
client:
fetch-registry: false # 是否獲取注冊(cè)表
service-url:
defaultZone: http://localhost:${server.port:8761}/eureka/ # 默認(rèn) Zone
register-with-eureka: false # 是否注冊(cè)自己
server:
enable-self-preservation: false # 是否開啟自我保護(hù),默認(rèn) true。在本機(jī)測(cè)試可以使用 false,但是在生產(chǎn)環(huán)境下必須為 true
驗(yàn)證 Eureka Server 啟動(dòng)結(jié)果
在瀏覽器輸入: http://localhost:8761 ,進(jìn)入 Eureka Server 可視化頁(yè)面

Eureka Server UI 提示信息
在 Eureka Server 檢測(cè)到異常時(shí),會(huì)在中間以紅色加粗字體提示信息。
在沒(méi)有 Eureka Client 或 Eureka Server 檢測(cè)心跳的閾值小于指定閾值,且關(guān)閉自我保護(hù)時(shí):
RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
提示說(shuō)明了:1、eureka client 的心跳發(fā)送次數(shù)小于閾值(沒(méi)有client,肯定小于);2、自我保護(hù)被關(guān)閉了
在有 Eureka Client,且關(guān)閉了自我保護(hù)時(shí):
THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
在沒(méi)有 Eureka Client 或 Eureka Server 檢測(cè)心跳的閾值小于指定閾值,且開啟了自我保護(hù)時(shí):
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
在有 Eureka Client 且 Eureka Server 檢測(cè)心跳的閾值大于指定閾值,且開啟了自我保護(hù)時(shí),Eureka Server 會(huì)認(rèn)為整個(gè)服務(wù)正常,不會(huì)有任何信息提示。
建立 Eureka Client 項(xiàng)目
在 在父pom中建立 Eureka Server 子項(xiàng)目 module:spring-cloud-eureka-client-simple,建立一個(gè)簡(jiǎn)單的 eureka client 工程
pom
<!-- parent 都和 Eureka Server 一致,不再贅述 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
啟動(dòng)類
// EurekaClient、DiscoveryClient 本質(zhì)上都是注冊(cè)到服務(wù)中心的實(shí)現(xiàn),EurekaClient 只針對(duì) Eureka 使用,
// DiscoveryClient 針對(duì)不同的注冊(cè)中心都可以使用。可以說(shuō) DiscoveryClient 的 EurekaClient 的一個(gè)抽象
@SpringBootApplication
@EnableDiscoveryClient //@EnableEurekaClient
public class SpringCloudEurekaClientSimpleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaClientSimpleApplication.class, args);
}
}
配置文件
spring:
application:
name: spring-cloud-eureka-client-simple # 工程名稱,也是注冊(cè)到 server 后的實(shí)例名稱
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka # 指定 Zone,需要與 Eureka Server 一樣
instance:
prefer-ip-address: true # 使用 ip 注冊(cè),默認(rèn)為 false。為 false 時(shí)是 機(jī)器名
instance-id: ${spring.application.name}:${server.port} # 注冊(cè)到 server 后顯示的名字,默認(rèn)是 機(jī)器名:name:端口
server:
port: 8081 # 端口
在 Eureka Server 驗(yàn)證服務(wù)注冊(cè)

可以看到,eureka client 已經(jīng)注冊(cè)成功。 status 大致有 5 個(gè)狀態(tài):UP(正常運(yùn)行)、DOWN(停機(jī))、STATING(正在啟動(dòng))、OUT_OF_SERVICE(下線)、UNKNOWN(為止)