2020年面試題-----Eureka自我保護機制是什麼?

Eureka自我保護機制出現的背景:

         Eureka的自我保護機制是爲了防止誤殺服務。當註冊中心發生故障,服務不能夠正常的續約,但是服務運行正常,默認情況下,Eureka會將超過90s未續約的服務進行移除。這樣做明顯不合理,所以Eureka提供了一個自我保護機制。

Eureka自我保護機制是什麼?

  1. Eureka在運行期間會統計心跳失敗的比例,在15分鐘內是否低於85%,如果出現了低於的情況,Eureka Server會將當前的實例註冊信息保護起來,同時提示一個警告,表明進入了保護模式
  2. 一旦進入保護模式,Eureka Server將會嘗試保護其服務註冊表中的信息,不再刪除服務註冊表中的數據。也就是不會註銷任何微服務。
  3. 我們在開發測試階段,需要頻繁地重啓發布,如果觸發了保護機制,則舊的服務實例沒有被刪除,這時請求有可能跑到舊的實例中,而該實例已經關閉了,這就導致請求錯誤,影響開發測試。所以,在開發測試階段,我們可以把自我保護模式關閉,只需在eureka server配置文件中加上如下配置即可:
 eureka.server.enable-self-preservation=false

      4. 自我保護模式可以讓集羣更加健壯。故障恢復時,自動退出自我保護模式。

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

Eureka服務端與客戶端如何溝通?

1. 服務註冊
進行服務註冊時,Eureka Client會向Eureka Server發送第一次心跳,會將服務的實例信息註冊到註冊中心

2. 服務註冊
Eureka Client 每30秒來發送一次心跳來更新實例信息。通知Eureka Server該實例仍然存在。如果超過90秒沒有發送更新,則服務器將從註冊信息中將此服務移除。續約時間可以更改,建議不要更改。

3. 獲取註冊表
Eureka Client從Eureka Server獲取註冊表信息並在本地緩存它,之後,客戶端使用該信息來查找其他服務。此信息會定期更新,30s更新一次,每次發送心跳的時候,就會與Eureka Server進行信息同步。

4. 取消請求
Eureka Client在關閉時,會發送一個shutdown請求。這將從Eureka Server的實例註冊表中刪除實例,從而有效地使實例脫離流量。

5.定時刷新
Eureka Server會定時來刷新緩存,來確保註冊服務的可用性。Eureka Client會定期來拉取(Fetch)註冊信息。
 

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