Eureka在springboot和springmvc中集成使用心得

最近自學(xué)eureka,作為springcloud中的重要組件之一,值得我們?nèi)パ芯亢蛯W(xué)習(xí)。

什么時(shí)eureka

eureka時(shí)使用rest風(fēng)格,定位服務(wù)的中間服務(wù)器完成負(fù)載均衡和故障轉(zhuǎn)移

springcloud集成了netfilx公司的eureka模塊,用作注冊(cè)中心,系統(tǒng)中的其他微服務(wù)使用 Eureka 的客戶端連接到 Eureka Server,并維持心跳連接

eureka中的架構(gòu)中包含replicate,application service,application client,make remote call

eureka各個(gè)節(jié)點(diǎn)之間通過replicate同步數(shù)據(jù)

application service作為服務(wù)提供者,application service為服務(wù)消費(fèi)者

服務(wù)啟動(dòng)后項(xiàng)eureka進(jìn)行注冊(cè),Eureka server會(huì)將注冊(cè)信息通過replicate想其他Eureka server進(jìn)行通過不,當(dāng)服務(wù)消費(fèi)者需要調(diào)用服務(wù)提供者,就回去注冊(cè)中心獲取服務(wù)提供者列表,并將列表放入本地緩存,下次調(diào)用的時(shí)候,直接去本地取,完成一次調(diào)用。

當(dāng)服務(wù)注冊(cè)中心Eureka server 檢測(cè)到服務(wù)提供者因?yàn)殄礄C(jī)或者網(wǎng)絡(luò)原因不可用的時(shí)候,則在服務(wù)眾測(cè)中心將該服務(wù)設(shè)置為DOWN狀態(tài),并通知給訂閱該服務(wù)的消費(fèi)者,消費(fèi)者更新緩存。

當(dāng)服務(wù)提供者啟動(dòng)后,周期性(默認(rèn)30s)的向eureka server 發(fā)送心跳鏈接,證明該付可用,當(dāng)eureka server在一定時(shí)間沒有收到客戶端的心跳,則認(rèn)為服務(wù)宕機(jī),隨即注銷該實(shí)例,但是有些情況下, 服務(wù)時(shí)跨進(jìn)程調(diào)用,服務(wù)本身沒有問題,為了避免eureka server錯(cuò)誤的將沒有問題的該服務(wù)注銷,eureka server實(shí)現(xiàn)了自我保護(hù)機(jī)制,通過配置eureka.server.enable-self-preservation=true,當(dāng)eureka server在短時(shí)間內(nèi)丟失較多的而客戶端,啟動(dòng)自我保護(hù)機(jī)制,不再注銷該實(shí)例,等到服務(wù)正常的時(shí)候,退出自我保護(hù)機(jī)制。

簡單的介紹了下eureka,下面直接來上代碼


工程目錄

parent父工程,

service-discover:注冊(cè)中心,

service-prodect:服務(wù)提供者,

service-consumer:服務(wù)消費(fèi)者,

service-interface:抽取出來的服務(wù)接口

SsmWeb:springmvc項(xiàng)目

一 :service-discover

配置文件


application.properties


啟動(dòng),看到如下界面,啟動(dòng)成功



二:service-prodect


application.properties


定義一個(gè)簡單的controller


啟動(dòng)服務(wù)提供者,在注冊(cè)中心中會(huì)看到這樣的信息,


在瀏覽器中輸入http://localhost:2100/list


和數(shù)據(jù)庫數(shù)據(jù)一樣



三:service-interface

我將服務(wù)提供者抽取為一個(gè)接口,注意這里的配置

feignClient注解

name:指定FeignClient的名稱,如果項(xiàng)目使用了Ribbon,name屬性會(huì)作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)

url: url一般用于調(diào)試,可以手動(dòng)指定@FeignClient調(diào)用的地址

decode404:當(dāng)發(fā)生http 404錯(cuò)誤時(shí),如果該字段位true,會(huì)調(diào)用decoder進(jìn)行解碼,否則拋出FeignException

configuration:?Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract

fallback:?定義容錯(cuò)的處理類,當(dāng)調(diào)用遠(yuǎn)程接口失敗或超時(shí)時(shí),會(huì)調(diào)用對(duì)應(yīng)接口的容錯(cuò)邏輯,fallback指定的類必須實(shí)現(xiàn)@FeignClient標(biāo)記的接口

fallbackFactory:?工廠類,用于生成fallback類示例,通過這個(gè)屬性我們可以實(shí)現(xiàn)每個(gè)接口通用的容錯(cuò)邏輯,減少重復(fù)的代碼

path:?定義當(dāng)前FeignClient的統(tǒng)一前綴



四:service-consumer


注意這里的紅線部分,配置我抽取出來的接口路徑

在消費(fèi)者定義controller


啟動(dòng)后在瀏覽器中訪問:http://localhost:8680/list 看到可以正常訪問。


同時(shí)再次查看注冊(cè)中心,多了個(gè)消費(fèi)者



五:SsmWeb

接下來演示如何在我們的傳統(tǒng)老項(xiàng)目springmvc中實(shí)現(xiàn)eureka


springmvc項(xiàng)目的配置不再贅述

直接進(jìn)入主題

pom文件請(qǐng)看源碼

我們來看兩個(gè)比較重要的配置feignConfig和config


feignConfig


config

這里我將url放入到數(shù)據(jù)庫,你們放到配置文件也可以


在springmvc中創(chuàng)建bean



在springmvc中編寫controller


啟動(dòng)springmvc項(xiàng)目http://localhost:8780/list


哈哈,還是看到結(jié)果,源碼地質(zhì)https://github.com/renyuanxin111/ryx_springcloud

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容