spring cloud微服務架構-Eureka保護機制

gung123發表於2020-01-17

 首先對Eureka註冊中心需要了解的是Eureka各個節點都是平等的,沒有ZK中角色的概念, 即使N-1個節點掛掉也不會影響其他節點的正常執行。瞭解springcloud架構可以加求求:三五三六二四七二五九


預設情況下,如果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:  
server:  
  enable-self-preservation:false  
   eviction-interval-timer-in-ms:3000

 2、 微服務修改減短服務心跳的時間。

lease-expiration-duration-in-seconds:10  
lease-renewal-interval-in-seconds:3

 以上配置建議在生產環境使用預設的時間配置。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2673762/,如需轉載,請註明出處,否則將追究法律責任。

相關文章