問題點:服務註冊到 Eureka 以後,能夠看到在 「Status」 顯示的服務信息不明確(不知道具體的服務名等信息),以下圖所示:spring
解決方法:apache
在服務的application.yml配置文件中,增長 instance-id 的信息,以下圖所示:網絡
eureka:
client: # 客戶端註冊進eureka內
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance: instance-id: microservicecloud-provider-dept-8001
重啓 Eureka 和 服務,而後打開:http://localhost:7001,能夠看到以下所示的頁面,「Status」中顯示的是 instance-id 中定義的名字;app
解決方法:maven
將服務的 instance 下的 prefer-ip-address 設置爲 true; (訪問路徑能夠顯示IP),以下所示:ide
重啓服務,接着打開eureka的頁面,鼠標放在」Status「上,以下所示(顯示IP)spring-boot
解決方法:微服務
(1)修改註冊服務(microservicecloud-provider-dept-8001) 的pom.xml文件,增長以下依賴:ui
<!-- actuator監控信息完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
(2)總的父工程(microservicecloud)修改pom.xml文件,添加構建build信息url
<build>
<finalName>microservicecloud</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
(3)打開註冊服務(microservicecloud-provider-dept-8001) 的application.yml文件,增長以下信息:
info:
app.name: yufeng-microservicecloud
company.name: www.yufeng.com
build.artifactId: $project.artifactId$
build.version: $project.version$
重啓註冊的服務,點擊以後獲得以下信息
默認狀況下,若EurekaServer 在必定時間內沒接收到某個微服務實例的心跳,Eureka將會註銷該實例(默認90秒);
當網絡故障發生時,微服務和Eureka服務是沒法正常通訊的,以上行爲可能就變得很危險(實際上微服務自己是健康的,此時不該該註銷這個服務);
Eureka經過「自我保護模式」來解決這個問題:當EurekaServer節點在短期間內丟失過多客戶端時(多是網絡故障),那麼這個節點就會進入自我保護模式。一旦進入自我保護模式,EurekaServer就會保護服務註冊表中的信息,再也不刪除服務註冊表中的數據(即不會註銷任何微服務)。當網絡故障恢復後,該EurekaServer節點會自動退出自我保護模式。
Eureka的自我保護機制:某個時刻一個微服務不可用了,Eureka不會馬上清理,依舊會對該服務的信息進行保存;
在配置文件中使用 eureka.server.enable-self-preservation = false ,禁用自我保護模式