更新時間:2021-03-25 來源:黑馬程序員 瀏覽量:
Eureka是Netflix開發的一個服務發現框架,本身是一個基于REST的服務,主要用于定位運行在AWS(Amazon Web Services )域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。Spring Cloud將其集成在自己的子項目Spring Cloud Netflix中,以實現Spring Cloud的服務發現功能。
Eureka 的服務發現包含兩大組件:服務端發現組件(Eureka Server)和客戶端發現組件(Eureka Client)。服務端發現組件也被稱之為服務注冊中心,主要提供了服務的注冊功能,而客戶端發現組件主要用于處理服務的注冊與發現。Eureka的服務發現機制如圖4-2所示。
Eureka的服務發現機制
從上圖中可以看出,當客戶端服務通過注解等方式嵌入到程序的代碼中運行時,客戶端發現組件就會向注冊中心注冊自身提供的服務,并周期性地發送心跳來更新服務(默認時間為30s,如果連續三次心跳都不能夠發現服務,那么Eureka就會將這個服務節點從服務注冊表中移除)。與此同時,客戶端發現組件還會從服務端查詢當前注冊的服務信息并緩存到本地,即使 Eureka Server出現了問題,客戶端組件也可以通過緩存中的信息調用服務節點的服務。各個服務之間會通過注冊中心的注冊信息以Rest方式來實現調用,并且可以直接通過服務名進行調用。
Eureka 的服務發現機制包含了 3 個角色:服務注冊中心、服務提供者和服務消費者。這 3個角色之間的關系如下圖所示。
Eureka中的角色
上圖中,服務注冊中心即Eureka Server,而服務提供者和服務消費者是Eureka Client。這里的服務提供者是指提供服務的應用,可以是Spring Boot應用,也可以是其他技術平臺且遵循Eureka通信機制的應用,應用在運行時會自動地將自己提供的服務注冊到Eureka Server以供其他應用發現。
服務消費者就是需要服務的應用,該服務在運行時會從服務注冊中心獲取服務列表,然后通過服務列表知道去何處調用其他服務。服務消費者會與服務注冊中心保持心跳連接,一旦服務提供者的地址發生變更時,注冊中心會通知服務消費者。
需要注意的是,Eureka 服務提供者和服務消費者之間的角色是可以相互轉換的,因為一個服務既可能是服務消費者,同時也可能是服務提供者。
猜你喜歡: