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

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

什么時eureka

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

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

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

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

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

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

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

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

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


工程目錄

parent父工程,

service-discover:注冊中心,

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

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

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

SsmWeb:springmvc項目

一 :service-discover

配置文件


application.properties


啟動,看到如下界面,啟動成功



二:service-prodect


application.properties


定義一個簡單的controller


啟動服務(wù)提供者,在注冊中心中會看到這樣的信息,


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


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



三:service-interface

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

feignClient注解

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

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

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

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

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

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

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



四:service-consumer


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

在消費者定義controller


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


同時再次查看注冊中心,多了個消費者



五:SsmWeb

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


springmvc項目的配置不再贅述

直接進入主題

pom文件請看源碼

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


feignConfig


config

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


在springmvc中創(chuàng)建bean



在springmvc中編寫controller


啟動springmvc項目http://localhost:8780/list


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

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

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

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