1. 程式人生 > 程式設計 >springCloud服務註冊Eureka實現過程圖解

springCloud服務註冊Eureka實現過程圖解

介紹

 Eureka 是Netfix開發的,一個基於Rest服務的,服務註冊與發現的元件。

   主要包括兩個元件:Eureka Server和Eureka Client

       Eureka Server:註冊中心,提供服務註冊與發現

       Eureka Client:java客戶端(通常就是微服務中的客戶端和服務端) 

springCloud服務註冊Eureka實現過程圖解

上圖簡要描述了Eureka的基本架構,由3個角色組成:

1.Eureka Server(註冊中心,相當於中介)

 2.Service Provider(服務提供方,相當於房東)

 3.Service Consumer(服務消費方,相當於租客)

服務註冊Register

  當eureka提供方(provider)向Eureka Server註冊時,它提供自身的元資料,例如:ip地址,埠,執行狀況指示符等(房東在中介登記房屋資訊,比如:面積,價格,地段)

服務續約Renew

  服務提供方(provider)每隔30s(預設)傳送一次心跳來續約,通過續約告訴Eureka Server 該服務提供方仍然存在,沒有出現問題,正常情況下,如果Eureka Server在90s內沒有收到服務提供方的續約,它會將例項從註冊中心刪除(房東定期告訴中介,我的房子還外租(續約),中介就會保留房屋資訊)

springCloud服務註冊Eureka實現過程圖解

服務剔除Eriction

  在預設情況下,當服務提供方連續90s沒有向註冊中心進行續約,即心跳,註冊中心會將該服務從服務註冊列表中剔除(房東定期聯絡中介告訴他房子還續約,如果中介長時間沒有收到房東的續約資訊,中介會將他的房屋資訊下架)

獲取註冊列表資訊FetchRegistries

  服務消費方從註冊中心獲取登錄檔資訊,並將其快取到本地,消費方會使用該資訊查詢其他服務,從而進行遠端呼叫,該註冊列表定期30S更新一次,每次返回註冊列表資訊可能與服務消費方快取資訊不同,服務消費方會自動處理,重新獲取整個登錄檔資訊,eureka Server和Eureka Client可以使用JSON/XMl格式進行通訊,預設情況下Eureka Client使用Json格式來獲取註冊列表資訊(租客去中介獲取所有的房屋資訊,而且租客為了獲取最新的房屋 資訊會定期向中介獲取並更新本地列表)

獲取服務是服務消費者的基礎,所以必有兩個重要引數需要注意:

springCloud服務註冊Eureka實現過程圖解

服務下線Cancel

 服務提供方在程式關閉時向註冊中心傳送取消請求,傳送後該服務提供方的資訊將從註冊中心的服務列表中刪除(房東告訴中介房子不租了,中介將此房子的資訊刪除),該下線請求不會自動完成,需要呼叫:

springCloud服務註冊Eureka實現過程圖解

遠端呼叫Remote Call

  當服務消費方從註冊中心獲取到服務提供方資訊後,就可以通過Http請求呼叫對應的服務;服務提供者有多個時,服務消費方會通過Ribbon自動進行負載均衡

自我保護機制

  預設情況下,如果註冊中心在90秒內沒有接受到某個微服務例項的心跳,會登出該例項,但是在微服務架構下服務之間通常都是跨程序呼叫,我那果洛通訊往往會面臨這各種問題,比如微服務狀態正常,網路分割槽故障,導致例項被登出。大量例項被登出,會威脅到整個微服務架構的可用性,所以eureka就有了自我保護機制,Eureka Server 在執行期間會去統計心跳失敗比例在 15 分鐘之內是否低於 85%,如果低於 85%,Eureka Server 即會進入自我保護機制

Eureka Server 觸發自我保護機制後,頁面會出現提示:

springCloud服務註冊Eureka實現過程圖解

Eureka Server 進入自我保護機制,會出現以下幾種情況:

  1.Eureka不再從註冊列表中移除因為長時間沒收到心跳而應該過期的服務

  2.Eureka仍然能夠接受新服務的註冊和查詢請求,但是不會被同步到其他節點上

  3.當網路穩定時,當前例項新的註冊資訊會被同步到其他節點上

  Eureka 自我保護機制是為了防止誤殺服務而提供的一個機制。當個別客戶端出現心跳失聯時,則認為是客戶端的問題,剔除掉客戶端;當 Eureka 捕獲到大量的心跳失敗時,則認為可能是網路問題,進入自我保護機制;當客戶端心跳恢復時,Eureka 會自動退出自我保護機制。

  如果在保護期內剛好這個服務提供者非正常下線了,此時服務消費者就會拿到一個無效的服務例項,即會呼叫失敗。對於這個問題需要服務消費者端要有一些容錯機制,如重試,斷路器等。

通過在 Eureka Server 配置如下引數,開啟或者關閉保護機制,生產環境建議開啟:

springCloud服務註冊Eureka實現過程圖解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。