當eureka server 在一定時間內(預設90s)沒有接收到某個微服務的心跳,eureka server會從服務列表將該服務例項登出,但是如果出現網路異常情況(微服務本身是正常的),微服務與eureka server之間無法正常通訊,以上行為可能變得非常危險了——因為微服務本身其實是正常的,此時本不應該登出這個微服務。
eureka server有一種 「自我保護模式」 來解決這個問題——當eureka server在短時間內丟失過多客戶端時(可能發生了網路故障),此時eureka server會進入自保護模式,一旦進入該模式,eureka server就會保護服務登錄檔中的資訊,不再刪除服務登錄檔中的資料(也就是不會登出任何微服務)。當網路故障恢復後,該eureka server會自動退出自我保護模式。
所以, 自我保護模式是一種應對網路異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目登出任何健康的微服務。使用自我保護模式,可以讓eureka集群更加的健壯、穩定。
正常開發過程中,建議禁止自我保護模式,預設是開啟的。
eureka:
server:
enable-self-preservation: false # 禁用自我保護模式
Eureka自我保護機制
概念 預設情況下,eurekaclient會定時向eurekaserver端傳送心跳,如果eurekaserver在一定時間內沒有收到eurekaclient傳送的心跳,便會把該例項從註冊服務列表中剔除 預設是90秒 但是在短時間內丟失大量的例項心跳,這時候eurekaserver會開啟自我保護機制...
eureka自我保護機制
在eureka專案中看到乙個配置 renewal percent threshold。並不是很理解,就此學習一下eureka的自我保護機制。從這個配置說起,從字面角度來說就是心跳的百分比臨界值。我們都知道所有的服務都需要去向eureka伺服器進行註冊,並且維持心跳。這個欄位大概率和這個心跳的頻率有關...
Eureka自我保護機制
預設情況下,當eureka server在一定時間內沒有收到例項的心跳,便會把該例項從登錄檔中刪除 預設是90秒 但是,如果短時間內丟失大量的例項心跳,便會觸發eureka server的自我保護機制,比如在開發測試時,需要頻繁地重啟微服務例項,但是我們很少會把eureka server一起重啟 因...