1. 程式人生 > >springcloud入門一(Eureka註冊中心 中篇)

springcloud入門一(Eureka註冊中心 中篇)

Eureka的一下概念

  • Register-服務註冊

服務提供者在啟動的時候會通過傳送REST請求將自己註冊到Eureka Server上,同時還攜帶了自身服務的一些元資料資訊。Eureka Server在接收到這個REST請求之後,將元資料資訊儲存在一個雙層結構的Map集合中,第一層的key是服務名,第二層的key是具體服務的例項名,

  • Renew-服務續約

在註冊完服務之後,服務提供者會維護一個心跳來不停的告訴Eureka Server:“我還在執行”,以防止Eureka Server將該服務例項從服務列表中剔除,這個動作稱之為服務續約,和服務續約相關的屬性有兩個,如下:

//配置用來定義服務失效時間,預設為90秒
eureka.instance.lease-expiration-duration-in-seconds=90  
//用來定義服務續約的間隔時間,預設為30秒。
eureka.instance.lease-renewal-interval-in-seconds=30
  • 獲取服務註冊列表資訊

Eureka Client 從Eureka Server 獲取服務登錄檔資訊,並將其快取到本地。
預設情況下 Client使用Server來獲取服務註冊列表資訊

  • 服務下線

服務提供者在執行的過程中可能會發生關閉或者重啟,當服務進行 正常 關閉時,它會觸發一個服務下線的REST請求給Eureka Server,告訴服務註冊中心我要下線了,服務註冊中心收到請求之後,將該服務狀態置為DOWN,表示服務已下線,並將該事件傳播出去,這樣就可以避免服務消費者呼叫了一個已經下線的服務提供者了。

DiscoveryManager .getinstance() .shutdownComponent
();
  • 服務剔除

上面我們說到了服務下線問題,正常的服務下線發生流程有一個前提那就是服務 正常 關閉,但是在實際執行中服務有可能沒有正常關閉,比如系統故障、網路故障等原因導致服務提供者非正常下線,那麼這個時候對於已經下線的服務Eureka採用了定時清除:Eureka Server在啟動的時候會建立一個定時任務,每隔60秒就去將當前服務提供者列表中超過90秒還沒續約的服務剔除出去,通過這種方式來避免服務消費者呼叫了一個無效的服務。