1. 程式人生 > >關於Eureka的自我保護模式

關於Eureka的自我保護模式

Eureka客戶試圖在同一區域與Eureka伺服器進行對話。
如果存在與伺服器對話的問題,或者伺服器在同一區域中不存在,則客戶端會在其他區域的伺服器上失敗。

一旦伺服器開始接收流量,在伺服器上執行的所有操作都將被複制到伺服器所知道的所有節點節點。
如果某個操作由於某種原因失敗了,那麼該資訊將在下一次在伺服器之間複製的heartbeat上進行協調。

當Eureka伺服器出現時,它試圖從相鄰節點獲取所有例項註冊資訊。
如果從節點獲取資訊有問題,伺服器在放棄之前嘗試所有的節點。
如果伺服器能夠成功地獲得所有例項,它將根據該資訊設定它應該接收的更新閾值。
如果任何時候,更新都低於為該值配置的百分比(在15分鐘內低於85%),伺服器停止過期例項以保護當前例項登錄檔資訊。

在Netflix上,上述保障被稱為“自我保護模式”,它主要用於在一組客戶端和Eureka伺服器之間存在網路劃分的場景中作為一種保護。
在這些場景中,伺服器試圖保護它已經擁有的資訊。
可能出現大規模中斷的情況,這可能導致客戶端獲得不再存在的例項。
客戶端必須確保他們對eureka伺服器返回一個不存在或沒有響應的例項有彈性。
在這些場景中,最好的保護是快速超時並嘗試其他伺服器。

在這種情況下,伺服器無法從鄰近節點獲得登錄檔資訊,它等待幾分鐘(5分鐘),以便客戶端可以註冊他們的資訊。
伺服器努力不向客戶端提供部分資訊,只向一組例項傾斜流量並造成容量問題。
Eureka伺服器使用Eureka客戶端和伺服器之間使用的相同機制進行通訊。
同樣值得注意的是,有幾種配置可以在伺服器上進行調整,包括在需要時伺服器之間的通訊。

在對等網路中斷的情況下,可能會發生以下情況:
對等點之間的心跳複製可能失敗,伺服器檢測到這種情況,並進入保護當前狀態的自我保護模式。
在孤立的伺服器中可能會發生註冊,一些客戶可能會反映新的註冊,而其他的可能不會。
在網路連線恢復到穩定狀態後,情況自動更正。當對等點能夠進行良好的通訊時,註冊資訊就會自動轉移到沒有它們的伺服器上。
底線是,在網路中斷期間,伺服器試圖儘可能地恢復彈性,但在此期間客戶可能會有不同的伺服器檢視。
原文地址:https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication