目錄
一、基礎架構
Eureka服務治理基礎架構包含三個核心要素:
服務註冊中心:Eureka提供的服務端,提供服務註冊和服務發現的功能。
服務提供者:提供服務的應用,可以將自己提供的服務註冊到eureka,以供其他服務區調用。
服務消費者:消費者應用從註冊中心獲取服務列表,找到自己所需要調用的服務。
二、服務治理機制
(一)、服務提供者
1、服務註冊:當服務提供者啓動時會通過REST請求的方式將自己註冊到EurekaServer上,並帶上服務自身的一些元數據。而EurekaServer接收到REST請求後,將元數據存儲在雙層Map中,第一層key爲服務名,第二層key爲具體服務的實例名。
2、服務同步:如果將兩個服務註冊到兩個不同的註冊中心時,設置註冊中心之間相互註冊爲服務,當服務提供者向其中一個註冊中心發送請求時,會轉發到集羣中相連的另一個註冊中心,這樣就可以實現服務同步。
3、服務續約:註冊完成後,服務提供者會維護一個心跳用來持續告訴EurekaServer自己的狀態,防止EurekaServer將自己剔除,此操作稱爲服務續約。服務續約的兩個重要屬性:
#定義服務續約任務的調用時間間隔
eureka.instance.lease-renewal-interval-in-seconds = 30
#服務失效時間
eureka.instance.lease-expireation-duration-in-seconds=90
(二)、服務消費者
1、獲取服務列表:當服務消費者啓動時,會發起rest請求到註冊中心,獲取服務清單(爲了性能考慮,清單隻可讀)。緩存清單更新時間默認爲90秒,可通過eureka.client.registry-fetch-interval-seconds=30來設置。
2、服務調用:通過服務名獲取元數據,根據自己需求調用哪個實例。(Region和Zone概念)
3、服務下線:如果服務正常關閉的話,會通過rest請求通知註冊中心。
(三)、服務註冊中心
1、失效剔除:EurekaServer啓動時,會默認開啓一個定時任務,默認每隔60秒將清單中超過(90秒)沒有續約的服務剔除。
2、自我保護:容錯機制、斷路器、請求重試等等
三、分析源碼
(待補充)
四、配置詳細分析
(一)、服務註冊類配置:可通過org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean查看源碼或者官方文檔進行查看。
(二)、註冊中心指定:通過eureka.client.service-url.defaultZon=http://localhost:1111/eureka/
屬性設置註冊中心地址,多個註冊中心可以用逗號分隔。若需要安全驗證時可以http://<username>:<password>@localhost:1111/eureka/來配置,username爲用戶名,password爲密碼。
(三)、其他配置:
org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean 查看該類中的常量既發現可以默認配置。
(四)、服務實例配置:
org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean 查看該類中的常量既發現可以默認配置。
五、跨平臺支持
Eureka不僅支持Java客戶端,還支持其他語言平臺,例如 eureka-js-client、python-eureka等等。