父 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 子項目
在父pom
中建立 Eureka Server 子項目 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>
啟動類
@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 # 是否獲取注冊表
service-url:
defaultZone: http://localhost:${server.port:8761}/eureka/ # 默認(rèn) Zone
register-with-eureka: false # 是否注冊自己
server:
enable-self-preservation: false # 是否開啟自我保護(hù)策橘,默認(rèn) true蒂誉。在本機(jī)測試可以使用 false,但是在生產(chǎn)環(huán)境下必須為 true
驗證 Eureka Server 啟動結(jié)果
在瀏覽器輸入: http://localhost:8761 膛檀,進(jìn)入 Eureka Server 可視化頁面
Eureka Server UI 提示信息
在 Eureka Server 檢測到異常時,會在中間以紅色加粗字體提示信息。
在沒有 Eureka Client 或 Eureka Server 檢測心跳的閾值小于指定閾值舍肠,且關(guān)閉自我保護(hù)時:
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.
提示說明了:1、eureka client 的心跳發(fā)送次數(shù)小于閾值(沒有client窘面,肯定小于)翠语;2、自我保護(hù)被關(guān)閉了
在有 Eureka Client财边,且關(guān)閉了自我保護(hù)時:
THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
在沒有 Eureka Client 或 Eureka Server 檢測心跳的閾值小于指定閾值肌括,且開啟了自我保護(hù)時:
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 檢測心跳的閾值大于指定閾值,且開啟了自我保護(hù)時酣难,Eureka Server 會認(rèn)為整個服務(wù)正常谍夭,不會有任何信息提示。
建立 Eureka Client 項目
在 在父pom
中建立 Eureka Server 子項目 module:spring-cloud-eureka-client-simple
憨募,建立一個簡單的 eureka client 工程
pom
<!-- parent 都和 Eureka Server 一致紧索,不再贅述 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
啟動類
// EurekaClient、DiscoveryClient 本質(zhì)上都是注冊到服務(wù)中心的實現(xiàn)菜谣,EurekaClient 只針對 Eureka 使用珠漂,
// DiscoveryClient 針對不同的注冊中心都可以使用∥膊玻可以說 DiscoveryClient 的 EurekaClient 的一個抽象
@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 # 工程名稱甘磨,也是注冊到 server 后的實例名稱
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka # 指定 Zone,需要與 Eureka Server 一樣
instance:
prefer-ip-address: true # 使用 ip 注冊眯停,默認(rèn)為 false济舆。為 false 時是 機(jī)器名
instance-id: ${spring.application.name}:${server.port} # 注冊到 server 后顯示的名字,默認(rèn)是 機(jī)器名:name:端口
server:
port: 8081 # 端口
在 Eureka Server 驗證服務(wù)注冊
可以看到莺债,eureka client 已經(jīng)注冊成功滋觉。 status 大致有 5 個狀態(tài):UP(正常運行)签夭、DOWN(停機(jī))、STATING(正在啟動)椎侠、OUT_OF_SERVICE(下線)第租、UNKNOWN(為止)