首頁技術(shù)文章正文

Spring eureka是什么?有什么作用?

更新時間:2021-03-25 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

Eureka是Netflix開發(fā)的一個服務(wù)發(fā)現(xiàn)框架,本身是一個基于REST的服務(wù),主要用于定位運行在AWS(Amazon Web Services )域中的中間層服務(wù),以達到負載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的。Spring Cloud將其集成在自己的子項目Spring Cloud Netflix中,以實現(xiàn)Spring Cloud的服務(wù)發(fā)現(xiàn)功能。

Eureka 的服務(wù)發(fā)現(xiàn)包含兩大組件:服務(wù)端發(fā)現(xiàn)組件(Eureka Server)和客戶端發(fā)現(xiàn)組件(Eureka Client)。服務(wù)端發(fā)現(xiàn)組件也被稱之為服務(wù)注冊中心,主要提供了服務(wù)的注冊功能,而客戶端發(fā)現(xiàn)組件主要用于處理服務(wù)的注冊與發(fā)現(xiàn)。Eureka的服務(wù)發(fā)現(xiàn)機制如圖4-2所示。

Eureka的服務(wù)發(fā)現(xiàn)機制

Eureka的服務(wù)發(fā)現(xiàn)機制

從上圖中可以看出,當客戶端服務(wù)通過注解等方式嵌入到程序的代碼中運行時,客戶端發(fā)現(xiàn)組件就會向注冊中心注冊自身提供的服務(wù),并周期性地發(fā)送心跳來更新服務(wù)(默認時間為30s,如果連續(xù)三次心跳都不能夠發(fā)現(xiàn)服務(wù),那么Eureka就會將這個服務(wù)節(jié)點從服務(wù)注冊表中移除)。與此同時,客戶端發(fā)現(xiàn)組件還會從服務(wù)端查詢當前注冊的服務(wù)信息并緩存到本地,即使 Eureka Server出現(xiàn)了問題,客戶端組件也可以通過緩存中的信息調(diào)用服務(wù)節(jié)點的服務(wù)。各個服務(wù)之間會通過注冊中心的注冊信息以Rest方式來實現(xiàn)調(diào)用,并且可以直接通過服務(wù)名進行調(diào)用。

Eureka 的服務(wù)發(fā)現(xiàn)機制包含了 3 個角色:服務(wù)注冊中心、服務(wù)提供者和服務(wù)消費者。這 3個角色之間的關(guān)系如下圖所示。

Eureka中的角色

Eureka中的角色

上圖中,服務(wù)注冊中心即Eureka Server,而服務(wù)提供者和服務(wù)消費者是Eureka Client。這里的服務(wù)提供者是指提供服務(wù)的應(yīng)用,可以是Spring Boot應(yīng)用,也可以是其他技術(shù)平臺且遵循Eureka通信機制的應(yīng)用,應(yīng)用在運行時會自動地將自己提供的服務(wù)注冊到Eureka Server以供其他應(yīng)用發(fā)現(xiàn)。

服務(wù)消費者就是需要服務(wù)的應(yīng)用,該服務(wù)在運行時會從服務(wù)注冊中心獲取服務(wù)列表,然后通過服務(wù)列表知道去何處調(diào)用其他服務(wù)。服務(wù)消費者會與服務(wù)注冊中心保持心跳連接,一旦服務(wù)提供者的地址發(fā)生變更時,注冊中心會通知服務(wù)消費者。

需要注意的是,Eureka 服務(wù)提供者和服務(wù)消費者之間的角色是可以相互轉(zhuǎn)換的,因為一個服務(wù)既可能是服務(wù)消費者,同時也可能是服務(wù)提供者。



猜你喜歡:

Spring MVC框架有哪些優(yōu)點?

Spring AOP實現(xiàn)原理和常見代理的區(qū)別

Spring Cloud是什么?怎么理解Spring Cloud?

Spring Boot如何實現(xiàn)微服務(wù)?/a>

Spring框架功能分為哪些模塊?

黑馬程序員java培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!