JavaEureka探究細枝末節(jié)_第1頁
JavaEureka探究細枝末節(jié)_第2頁
JavaEureka探究細枝末節(jié)_第3頁
JavaEureka探究細枝末節(jié)_第4頁
JavaEureka探究細枝末節(jié)_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第JavaEureka探究細枝末節(jié)目錄1、Eureka元數據詳解2、Eureka客戶端詳解3、Eureka服務端詳解

1、Eureka元數據詳解

Eureka的元數據有兩種:標準元數據和自定義元數據。

標準元數據:主機名、IP地址、端口號等信息,這些信息都會被發(fā)布在服務注冊表中,用于服務之間的調用。

自定義元數據:可以使用eureka.instance.metadata-map配置,符合KEY/VALUE的存儲格式。這些元數據可以在遠程客戶端中訪問。

類似于

eureka:

instance:

prefer-ip-address:true

metadata-map:

cluster:cl1

region:rn1

我們可以在程序中可以使用DiscoveryClient獲取指定微服務的所有元數據信息

import.AutoDeliverApplication;

importorg.junit.Test;

importorg.junit.runner.RunWith;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.boot.test.context.SpringBootTest;

importorg.springframework.cloud.client.ServiceInstance;

importorg.springframework.cloud.client.discovery.DiscoveryClient;

importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;

importjava.util.List;

@SpringBootTest(classes={AutoDeliverApplication.class})

@RunWith(SpringJUnit4ClassRunner.class)

publicclassAutoDeliverApplicationTest{

@Autowired

privateDiscoveryClientdiscoveryClient;

@Test

publicvoidtestInstanceMetadata(){

//從EurekaServer獲取指定微服務實例

ListServiceInstanceinstances=discoveryClient.getInstances("lagou-service-resume");

//循環(huán)打印每個微服務實例的元數據信息

for(inti=0;iinstances.size();i++){

ServiceInstanceserviceInstance=instances.get(i);

System.out.println(serviceInstance);

}

元數據查看如下

2、Eureka客戶端詳解

服務提供者(也是Eureka客戶端)要向EurekaServer注冊服務,并完成服務續(xù)約等工作

服務注冊詳解(服務提供者)

當我們導入了eureka-client依賴坐標,配置Eureka服務注冊中心地址服務在啟動時會向注冊中心發(fā)起注冊請求,攜帶服務元數據信息Eureka注冊中心會把服務的信息保存在Map中

服務續(xù)約詳解(服務提供者)

服務每隔30秒會向注冊中心續(xù)約(心跳)一次(也稱為報活),如果沒有續(xù)約,租約在90秒后到期,然后服務會被失效。每隔30秒的續(xù)約操作我們稱之為心跳檢測。

往往不需要我們調整這兩個配置

eureka:

instance:

lease-renewal-interval-in-seconds:30

lease-expiration-duration-in-seconds:90

獲取服務列表詳解(服務消費者)

每隔30秒服務會從注冊中心中拉取一份服務列表,這個時間可以通過配置修改。往往不需要我們調整。

eureka:

client:#每隔多久拉取一次服務列表

registry-fetch-interval-seconds:30

服務消費者啟動時,從EurekaServer服務列表獲取只讀備份,緩存到本地每隔30秒,會重新獲取并更新數據每隔30秒的時間可以通過配置eureka.client.registry-fetch-interval-seconds修改

3、Eureka服務端詳解

服務下線

當服務正常關閉操作時,會發(fā)送服務下線的REST請求給EurekaServer。服務中心接受到請求后,將該服務置為下線狀態(tài)

失效剔除

EurekaServer會定時(間隔值是eureka.server.eviction-interval-timer-in-ms,默認60s)進行檢查,如果發(fā)現實例在在一定時間(此值由客戶端設置的eureka.instance.lease-expiration-duration-in-seconds定義,默認值為90s)內沒有收到心跳,則會注銷此實例。

自我保護

服務提供者注冊中心

定期的續(xù)約(服務提供者和注冊中心通信),假如服務提供者和注冊中心之間的網絡有點問題,不代表服務提供者不可用,不代表服務消費者無法訪問服務提供者。如果在15分鐘內超過85%的客戶端節(jié)點都沒有正常的心跳,那么Eureka就認為客戶端與注冊中心出現了網絡故障,EurekaServer自動進入自我保護機制。

為什么會有自我保護機制?

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

服務中心頁面會顯示如下提示信息

當處于自我保護模式時

不會剔除任何服務實例(可能是服務提供者和EurekaServer之間網絡問題),保證了大多數服務依然可用EurekaServer仍然能夠接受新服務的注冊和查詢請求,但是不會被同步到其它節(jié)點上,保證當前節(jié)點依然可用,當網絡穩(wěn)定時,當前EurekaServer新的注冊信息會被同步到其它節(jié)點中。在EurekaServer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論