更新時(shí)間:2021年03月25日14時(shí)09分 來(lái)源:傳智教育 瀏覽次數(shù):
Eureka是Netflix開(kāi)發(fā)的一個(gè)服務(wù)發(fā)現(xiàn)框架,本身是一個(gè)基于REST的服務(wù),主要用于定位運(yùn)行在AWS(Amazon Web Services )域中的中間層服務(wù),以達(dá)到負(fù)載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的。Spring Cloud將其集成在自己的子項(xiàng)目Spring Cloud Netflix中,以實(shí)現(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ù)注冊(cè)中心,主要提供了服務(wù)的注冊(cè)功能,而客戶端發(fā)現(xiàn)組件主要用于處理服務(wù)的注冊(cè)與發(fā)現(xiàn)。Eureka的服務(wù)發(fā)現(xiàn)機(jī)制如圖4-2所示。
Eureka的服務(wù)發(fā)現(xiàn)機(jī)制
從上圖中可以看出,當(dāng)客戶端服務(wù)通過(guò)注解等方式嵌入到程序的代碼中運(yùn)行時(shí),客戶端發(fā)現(xiàn)組件就會(huì)向注冊(cè)中心注冊(cè)自身提供的服務(wù),并周期性地發(fā)送心跳來(lái)更新服務(wù)(默認(rèn)時(shí)間為30s,如果連續(xù)三次心跳都不能夠發(fā)現(xiàn)服務(wù),那么Eureka就會(huì)將這個(gè)服務(wù)節(jié)點(diǎn)從服務(wù)注冊(cè)表中移除)。與此同時(shí),客戶端發(fā)現(xiàn)組件還會(huì)從服務(wù)端查詢當(dāng)前注冊(cè)的服務(wù)信息并緩存到本地,即使 Eureka Server出現(xiàn)了問(wèn)題,客戶端組件也可以通過(guò)緩存中的信息調(diào)用服務(wù)節(jié)點(diǎn)的服務(wù)。各個(gè)服務(wù)之間會(huì)通過(guò)注冊(cè)中心的注冊(cè)信息以Rest方式來(lái)實(shí)現(xiàn)調(diào)用,并且可以直接通過(guò)服務(wù)名進(jìn)行調(diào)用。
Eureka 的服務(wù)發(fā)現(xiàn)機(jī)制包含了 3 個(gè)角色:服務(wù)注冊(cè)中心、服務(wù)提供者和服務(wù)消費(fèi)者。這 3個(gè)角色之間的關(guān)系如下圖所示。
Eureka中的角色
上圖中,服務(wù)注冊(cè)中心即Eureka Server,而服務(wù)提供者和服務(wù)消費(fèi)者是Eureka Client。這里的服務(wù)提供者是指提供服務(wù)的應(yīng)用,可以是Spring Boot應(yīng)用,也可以是其他技術(shù)平臺(tái)且遵循Eureka通信機(jī)制的應(yīng)用,應(yīng)用在運(yùn)行時(shí)會(huì)自動(dòng)地將自己提供的服務(wù)注冊(cè)到Eureka Server以供其他應(yīng)用發(fā)現(xiàn)。
服務(wù)消費(fèi)者就是需要服務(wù)的應(yīng)用,該服務(wù)在運(yùn)行時(shí)會(huì)從服務(wù)注冊(cè)中心獲取服務(wù)列表,然后通過(guò)服務(wù)列表知道去何處調(diào)用其他服務(wù)。服務(wù)消費(fèi)者會(huì)與服務(wù)注冊(cè)中心保持心跳連接,一旦服務(wù)提供者的地址發(fā)生變更時(shí),注冊(cè)中心會(huì)通知服務(wù)消費(fèi)者。
需要注意的是,Eureka 服務(wù)提供者和服務(wù)消費(fèi)者之間的角色是可以相互轉(zhuǎn)換的,因?yàn)橐粋€(gè)服務(wù)既可能是服務(wù)消費(fèi)者,同時(shí)也可能是服務(wù)提供者。
猜你喜歡:
Spring AOP實(shí)現(xiàn)原理和常見(jiàn)代理的區(qū)別
Spring Cloud是什么?怎么理解Spring Cloud?
北京校區(qū)