您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么理解Spring Cloud Eureka的自我保護機制”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解Spring Cloud Eureka的自我保護機制”吧!
關閉自我保護機制(默認是打開的):eureka.server.enable-self-preservation=false
自我保護機制:默認情況下,如果Eureka Server在一定時間內沒有接收到某個微服務實例的心跳,Eureka Server將會注銷該實例(默認90秒)。但是當網絡分區故障發生時,微服務與Eureka Server之間無法正常通信,以上行為可能變得非常危險了——因為微服務本身其實是健康的,此時本不應該注銷這個微服務。
Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節點在短時間內丟失過多客戶端時(可能發生了網絡分區故障),那么這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是不會注銷任何微服務)。當網絡故障恢復后,該Eureka Server節點會自動退出自我保護模式。
綜上,自我保護模式是一種應對網絡異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服務都會保留),也不盲目注銷任何健康的微服務。使用自我保護模式,可以讓Eureka集群更加的健壯、穩定。
但是,在我們實際生產中,我們云環境同一個Region下不會發生大規模網絡分區狀況,所以沒有啟用自我保護。
相關參數:eureka.server.renewalPercentThreshold = 0.85
在每一個服務實例注冊時:
expectedNumberOfRenewsPerMin += 2 numberOfRenewsPerMinThreshold = RenewalPercentThreshold*numberOfRenewsPerMinThreshold
無論你設置心跳時間是多少,expectedNumberOfRenewsPerMin都是+2(默認心跳時間是30s,每分鐘有60s,所以+2,但是沒有根據真正的心跳時間修改,應該算是個缺陷)
在收到心跳時:
renewsLastMin.increment()
當renewsLastMin<numberOfRenewsPerMinThreshold
,就會觸發自我保護,不會失效過期服務
到此,相信大家對“怎么理解Spring Cloud Eureka的自我保護機制”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。