Spring Cloud的小改進(五)

一、在Eureka中不能看到具體服務的實例信息;

問題點:服務註冊到 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

二、將鼠標放在「Status"中,頁面的左下角顯示連接的地址不明確(未顯示IP)

解決方法:maven

  將服務的 instance 下的 prefer-ip-address 設置爲 true; (訪問路徑能夠顯示IP),以下所示:ide

重啓服務,接着打開eureka的頁面,鼠標放在」Status「上,以下所示(顯示IP)spring-boot

 

 

 三、打開Eureka頁面,點擊註冊的服務的「Status」的超連接以後報錯

 

解決方法:微服務

(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$

 重啓註冊的服務,點擊以後獲得以下信息

 

四、Eureka的自我保護機制:

默認狀況下,若EurekaServer 在必定時間內沒接收到某個微服務實例的心跳,Eureka將會註銷該實例(默認90秒)

當網絡故障發生時,微服務和Eureka服務是沒法正常通訊的,以上行爲可能就變得很危險(實際上微服務自己是健康的,此時不該該註銷這個服務);

Eureka經過「自我保護模式」來解決這個問題:當EurekaServer節點在短期間內丟失過多客戶端時(多是網絡故障),那麼這個節點就會進入自我保護模式。一旦進入自我保護模式,EurekaServer就會保護服務註冊表中的信息,再也不刪除服務註冊表中的數據(即不會註銷任何微服務)。當網絡故障恢復後,該EurekaServer節點會自動退出自我保護模式。

Eureka的自我保護機制:某個時刻一個微服務不可用了,Eureka不會馬上清理,依舊會對該服務的信息進行保存;

在配置文件中使用 eureka.server.enable-self-preservation = false ,禁用自我保護模式

 

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.

相關文章
相關標籤/搜索