理解Eureka的自我保護模式

2021-09-20 05:59:10 字數 863 閱讀 4101

本文我們來**eureka的自我保護模式。自我保護模式是eureka的重要特性。進入自我保護模式最直觀的體現,是eureka server首頁輸出的警告,如圖4-10所示。

4-10 保護模式.png

圖4-10 eureka server自我保護模式介面

預設情況下,如果eureka server在一定時間內沒有接收到某個微服務例項的心跳,eureka server將會登出該例項(預設90秒)。但是當網路分割槽故障發生時,微服務與eureka server之間無法正常通訊,以上行為可能變得非常危險了——因為微服務本身其實是健康的,此時本不應該登出這個微服務。

eureka通過「自我保護模式」來解決這個問題——當eureka server節點在短時間內丟失過多客戶端時(可能發生了網路分割槽故障),那麼這個節點就會進入自我保護模式。一旦進入該模式,eureka server就會保護服務登錄檔中的資訊,不再刪除服務登錄檔中的資料(也就是不會登出任何微服務)。當網路故障恢復後,該eureka server節點會自動退出自我保護模式。

綜上,自我保護模式是一種應對網路異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目登出任何健康的微服務。使用自我保護模式,可以讓eureka集群更加的健壯、穩定。

在spring cloud中,可以使用eureka.server.enable-self-preservation = false禁用自我保護模式。

(1) eureka官方關於自我保護模式的介紹:

(2) eureka的faq,其中講到了自我保護模式:

(3) eureka與zookeeper做服務發現的對比:

(4) eureka不登出任何微服務的討論:

目錄詳見:[

Eureka 自我保護模式

啟動兩個client,過了一會,停了其中乙個,訪問註冊中心時,介面上顯示了紅色粗體警告資訊 eureka server和client之間每隔30秒會進行一次心跳通訊,告訴server,client還活著。由此引出兩個名詞 renews threshold server期望在每分鐘中收到的心跳次數 r...

關於Eureka的自我保護模式

eureka客戶試圖在同一區域與eureka伺服器進行對話。如果存在與伺服器對話的問題,或者伺服器在同一區域中不存在,則客戶端會在其他區域的伺服器上失敗。一旦伺服器開始接收流量,在伺服器上執行的所有操作都將被複製到伺服器所知道的所有節點節點。如果某個操作由於某種原因失敗了,那麼該資訊將在下一次在伺服...

eureka自我保護時間 Eureka自我保護機制

自我保護背景 首先對eureka註冊中心需要了解的是eureka各個節點都是平等的,沒有zk中角色的概念,即使n 1個節點掛掉也不會影響其他節點的正常執行。預設情況下,如果eureka server在一定時間內 預設90秒 沒有接收到某個微服務例項的心跳,eureka server將會移除該例項。但...