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

2021-10-13 09:39:05 字數 1272 閱讀 1041

自我保護背景

首先對eureka註冊中心需要了解的是eureka各個節點都是平等的,沒有zk中角色的概念, 即使n-1個節點掛掉也不會影響其他節點的正常執行。

預設情況下,如果eureka server在一定時間內(預設90秒)沒有接收到某個微服務例項的心跳,eureka server將會移除該例項。但是當網路分割槽故障發生時,微服務與eureka server之間無法正常通訊,而微服務本身是正常執行的,此時不應該移除這個微服務,所以引入了自我保護機制。

自我保護機制

官方對於自我保護機制的定義:

自我保護模式正是一種針對網路異常波動的安全保護措施,使用自我保護模式能使eureka集群更加的健壯、穩定的執行。

自我保護機制的工作機制是如果在15分鐘內超過85%的客戶端節點都沒有正常的心跳,那麼eureka就認為客戶端與註冊中心出現了網路故障,eureka server自動進入自我保護機制,此時會出現以下幾種情況:

1、eureka server不再從註冊列表中移除因為長時間沒收到心跳而應該過期的服務。

2、eureka server仍然能夠接受新服務的註冊和查詢請求,但是不會被同步到其它節點上,保證當前節點依然可用。

3、當網路穩定時,當前eureka server新的註冊資訊會被同步到其它節點中。

因此eureka server可以很好的應對因網路故障導致部分節點失聯的情況,而不會像zk那樣如果有一半不可用的情況會導致整個集群不可用而變成癱瘓。

自我保護開關

eureka自我保護機制,通過配置 eureka.server.enable-self-preservation來true開啟/false禁用自我保護機制,預設開啟狀態,建議生產環境開啟此配置。

1 eureka:2 server:3 # 測試時關閉自我保護機制,保證不可用服務及時踢出4 enable-self-preservation: false

伺服器端配置:

1 # 心跳檢測檢測與續約時間2 # 測試時將值設定設定小些,保證服務關閉後註冊中心能及時踢出服務3 eureka:4 instance:5 lease-renewal-interval-in-seconds: 1

6 lease-expiration-duration-in-seconds: 2

客戶端配置:

以上配置說明

lease-renewal-interval-in-seconds 每間隔1s,向服務端傳送一次心跳,證明自己依然」存活「

lease-expiration-duration-in-seconds  告訴服務端,如果我2s之內沒有給你發心跳,就代表我「死」了,將我踢出掉。

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

為什麼會產生eureka的自我保護機制?為了防止eurekaclient 服務提供者 可以正常執行,但是與eurekaserver網路擁擠的情況下,eurekaserver不會將eurekaclient服務剔除 什麼是eureka的自我保護進製 預設情況下,如果eureka在一定時間內沒有收到某個微...

Eureka自我保護

為什麼會產生 eureka自我保護機制?為了防止以下情況 eurekaclienti可以正常執行,但是與 eurekaserver網路不通情況下,eurekaserver立刻將 eurekaclient服務剔除。如果進入了自我保護模式就不會立刻刪除服務。什麼是自我保護模式?這裡只修改7001和800...

Eureka自我保護

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