最近自學(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
配置文件


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

二:service-prodect


定義一個簡單的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


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

在springmvc中創(chuàng)建bean

在springmvc中編寫controller

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

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