【SpringCloud系列】Eureka控制檯及自我保護機制------通俗易懂版

大千世界,茫茫人海,相識就是一種緣分。若此篇文章對您有幫助,點個贊或點個關注唄!

一、Eureka控制檯介紹

1、進入Eureka控制檯,首先查看HOME頁的頭部
在這裏插入圖片描述

  • Environment : 環境,默認爲test, 該參數在實際使用過程中,可以不用更改;
  • Data center : 數據中心,使用的是默認的是 “MyOwn”;
  • Current time: 當前的系統時間;
  • Uptime: 當前Eureka服務已運行的時間;
  • Lease expiration enabled: 是否啓用租約過期 , 自我保護機制關閉時,該值默認是true, 自我保護機制開啓之後爲false;
  • Renews threshold: 每分鐘最少續約數;
  • Renews (last min): 最後一分鐘的續約數量(不含當前,1分鐘更新一次)。

2、DS Replicas與Instances currently registered with Eureka
在這裏插入圖片描述

3、General Info
在這裏插入圖片描述

  • total-avail-memory: 總共可用內存;
  • environment: 環境名稱,默認test
  • num-of-cpus: CPU個數
  • current-memory-usage : 當前已使用內存所佔百分比
  • server-uptime : 服務正常運行時間
  • registered-replicas : 相鄰集羣複製節點
  • unavailable-replicas : 不可用的集羣複製節點,如何檢測節點不可用。 若server1 向 server2發送接口查詢自身的註冊信息,若查詢不到,則默認該節點爲不可用 , 也就是說如果Eureka Server自身不作爲客戶端註冊到上面去,則相鄰節點都會顯示爲不可用。
  • available-replicas : 可用的相鄰集羣複製節點

4、Instance Info
在這裏插入圖片描述

  • ipAddr: eureka服務端IP地址
  • status: eureka服務端狀態(DOWN表示端口處於關閉狀態,UP則是打開狀態。)

5、Last 1000 since startup
在這裏插入圖片描述
在這裏插入圖片描述

  • Last 1000 cancelled leases: 最後1000個取消的租約
  • Last 1000 newly registered leases: 最後1000個新註冊的租約

6、三類預警狀態

  • 在配置上,自我保護機制關閉
    RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS
  • 自我保護機制開啓
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE
  • 在配置上,自我保護機制關閉了,但是一分鐘內的續約數沒有達到85% , 可能發生了網絡分區,會有如下提示
    THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS

二、Eureka自我保護機制

server:
  port: 8888
# Eureka註冊中心
eureka:
  instance:
    hostname: 127.0.0.1
    instance-id: ${spring.application.name}:${eureka.instance.hostname}:${server.port}
    #無心跳淘汰時間10s
    lease-expiration-duration-in-seconds: 10
    #心跳間隔時間10s
    lease-renewal-interval-in-seconds: 10000
  client:
    service-url:
      defaultZone: http://127.0.0.1:8100/bureka/eureka/
    register-with-eureka: true
    fetch-registry: true
  server:
    enable-self-preservation: false #關閉自我保護機制

默認情況下,如果Eureka Server在一定時間內(默認90秒)沒有接收到某個微服務實例的心跳,Eureka Server將會移除該實例。但是當網絡分區故障發生時,微服務與Eureka Server之間無法正常通信,而微服務本身是正常運行的,此時不應該移除這個微服務,所以引入了自我保護機制。

  • 自我保護模式正是一種針對網絡異常波動的安全保護措施,使用自我保護模式能使Eureka集羣更加的健壯、穩定的運行。
  • 自我保護機制的工作機制是如果在15分鐘內超過85%的客戶端節點都沒有正常的心跳,那麼Eureka就認爲客戶端與註冊中心出現了網絡故障,Eureka Server自動進入自我保護機制

比如在開發測試時,需要頻繁地重啓微服務實例,但是我們很少會把eureka server一起重啓(因爲在開發過程中不會修改eureka註冊中心),當一分鐘內收到的心跳數大量減少時,會觸發該保護機制。可以在eureka管理界面看到Renews threshold和Renews(last min),當後者(最後一分鐘收到的心跳數)小於前者(心跳閾值)的時候,觸發保護機制,會出現紅色的警告:

在這裏插入圖片描述
  該保護機制的目的是避免網絡連接故障,在發生網絡故障時,微服務和註冊中心之間無法正常通信,但服務本身是健康的,不應該註銷該服務。 如果eureka因網絡故障而把微服務誤刪了,那即使網絡恢復了,該微服務也不會重新註冊到eureka server了,因爲只有在微服務啓動的時候纔會發起註冊請求,後面只會發送心跳和服務列表請求,這樣的話,該實例雖然是運行着,但永遠不會被其它服務所感知。 所以,eureka server在短時間內丟失過多的客戶端心跳時,會進入自我保護模式,該模式下,eureka會保護註冊表中的信息,不在註銷任何微服務,當網絡故障恢復後,eureka會自動退出保護模式。自我保護模式可以讓集羣更加健壯。

  但是我們在開發測試階段,需要頻繁地重啓發布,如果觸發了保護機制,則舊的服務實例沒有被刪除,這時請求有可能跑到舊的實例中,而該實例已經關閉了,這就導致請求錯誤,影響開發測試。所以,在開發測試階段,我們可以把自我保護模式關閉,只需在eureka server配置文件中加上如下配置即可:

eureka.server.enable-self-preservation=false

  但在生產環境,不會頻繁重啓,所以,一定要把自我保護機制打開,否則網絡一旦終端,就無法恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章