5.4Eureka的自我保護機制

Eureka的自我保護機制
  1. 概述

  2. 故障原因

    1. 爲什麼會產生Eureka自我保護機制?

    爲了防止EurekaClient可以正常運行,但是與EurekaServer網絡不通情況下,EurekaServer不會立刻將EurekaClient服務 剔除。

    1. 什麼是自我保護模式?——在自我保護模式中,Eureka Server會保護服務註冊表中的信息,不再註銷任何服務實例。

    默認情況下,如果EurekaServer在一定時間內沒有接收到某 個微服務實例的心跳, EurekaServer將會註銷該實例 (默認90秒)。但是當網絡分區故障發生(延時、卡頓、擁擠)時,微服務與EurekaServer之間無法正常通信,以上行爲可能變得非常危險了——因爲微服務本身其實是健康的,此時本不應該註銷這個微服務。Eureka通過 ” 自我保護模式”來解決這個問題一當EurekaServer節 點在短時間內丟失過多客戶端時(可能發生了網絡分區故障), 那麼這個節點就會進入自我保護模式。

    1. 綜上,自我保護模式是一種應對網絡異常的安全保護措施。它的架構哲學是寧可同時保留所有微服務(健康的微服務和不健康的微服
      務都會保留)也不盲目註銷任何健康的微服務。使用自我保護模式,可以讓Eureka集羣更加的健壯、穩定。
  3. 如何禁止自我保護機制

    1. 方法:

      #自我保護機制是默認開啓的
      eureka.server.enable-self-preservation=true
      #使用下列配置可以關閉自我保護機制
      eureka.server.enable-self-preservation=false
      
    2. 完整的yml配置

      eureka:
        client:
          #表示是否將自己註冊進EurekaServer默認爲true。false表示不向註冊中心註冊自己
          register-with-eureka: true
          #false表示自己端就是註冊中心,職責就是維護服務實例,並不需要去檢索服務
          #是否從EurekaServer抓取已有的註冊信息,默認爲true。單節點無所謂,集羣必須設置爲true才能配合ribbon使用負載均衡
          fetchRegistry: true
          service-url:
            defaultZone: http://eureka7002.com:7002/eureka,http://eureka7001.com:7001/eureka
        instance:
          instance-id: payment8001
          prefer-ip-address: true #訪問路徑可以顯示IP地址
          lease-renewal-interval-in-seconds: 1 #Eureka客戶端向服務端發送心跳的時間間隔,單位爲秒!
          lease-expiration-duration-in-seconds: 2 #Eureka服務端在接收最後一次心跳後的等待時間上限(默認90s)
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章