Eureka的自我保護模式


一 Eureka的自我保護模式

進入自我保護模式最直觀的體現就是Eureka Server首頁的警告,如下圖:

 技術分享

 默認情況下,如果Eureka Server在一定時間內沒有接收到某個微服務實例的心跳,Eureka Server將會注銷該實例(默認90秒)。但是當網絡分區故障發生時,微服務與Eureka Server之間無法正常通信,這就可能變得非常危險了----因為微服務本身是健康的,此時本不應該注銷這個微服務。

  Eureka Server通過“自我保護模式”來解決這個問題----當Eureka Server節點在短時間內丟失過多客戶端時(可能發生了網絡分區故障),那么這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是不會注銷任何微服務)。當網絡故障恢復后,該Eureka Server節點會自動退出自我保護模式。

 自我保護模式是一種對網絡異常的安全保護措施。使用自我保護模式,而已讓Eureka集群更加的健壯、穩定。

 

二 

 

在Spring Cloud中,可以使用eureka.server.enable-self-preservation=false來禁用自我保護模式

 

Eureka的健康檢查

先看下圖:

 技術分享

說明:在Status欄顯示着UP,表示應用程序狀態正常。其它取值DOWN、OUT_OF_SERVICE、UNKNOWN等,只有UP的微服務會被請求。

 

由於Eureka Server與Eureka Client之間使用心跳機制來確定Eureka Client的狀態,默認情況下,服務器端與客戶端的心跳保持正常,應用程序就會始終保持“UP”狀態,所以微服務的UP並不能完全反應應用程序的狀態。

 

Spring Boot Actuator提供了/health端點,該端點可展示應用程序的健康信息,只有將該端點中的健康狀態傳播到Eureka Server就可以了,實現這點很簡單,只需為微服務配置如下內容:

#開啟健康檢查(需要spring-boot-starter-actuator依賴)
eureka.client.healthcheck.enabled = true

如果需要更細粒度健康檢查,可實現com.netflix.appinfo.HealthCheckHandler接口 。 EurekaHealthCheckHandler 已實現了該接口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM