1. 程式人生 > >SpringCloud-Eureka服務註冊與發現之自我保護機制(四)

SpringCloud-Eureka服務註冊與發現之自我保護機制(四)

當我們進行SpringCloud微服務開發的時候,有可能會出現如下的一些紅色提示資訊。這個是Eureka的自我保護機制。

自我保護機制 :預設情況下,如果Eureka Server在一定時間內沒有接收到某個微服務例項的心跳,Eureka Server將會登出該例項(預設90秒)。但是當網路分割槽故障發生時,微服務與Eureka Server之間無法正常通訊,以上行為可能變得非常危險了——因為微服務本身其實是健康的,此時本不應該登出這個微服務。 Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節點在短時間內丟失過多客戶端時(可能發生了網路分割槽故障),那麼這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務登錄檔中的資訊,不再刪除服務登錄檔中的資料(也就是不會登出任何微服務)。當網路故障恢復後,該Eureka Server節點會自動退出自我保護模式。
綜上,自我保護模式是一種應對網路異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目登出任何健康的微服務。使用自我保護模式,可以讓Eureka叢集更加的健壯、穩定。 Eureka的自我保護機制用最通俗的語言說就是:好死不如賴活著。一句話:某時刻某一個微服不可用了,eureka不會立刻清理,依舊會對改微服的資訊進行儲存。
springcloud預設是開啟了自我保護機制,當我們不需要啟動自我保護機制是,可以在yml檔案中加入相關配置,但是一般情況下不推薦禁用自我保護機制 eureka.server.enable-self-preservation: false