Spring Cloud微服務-基於Eureka的feign呼叫(1)

古木2019發表於2019-03-26

全文概覽

本章是為後續的深度學習做準備工作

主要包含以下內容
開發三個簡單應用,包括:註冊中心、服務提供方、服務消費方,後續研究和實戰都在這三個應用基礎上進行; 

SpringCloud主要框架

 

服務發現——Netflix Eureka
服務呼叫——Netflix Feign
熔斷器——Netflix Hystrix
服務閘道器——Netflix Zuul
分散式配置——Spring Cloud Config
訊息匯流排 —— Spring Cloud Bus
 

版本列表

  1. JDK:1.8;
  2. spring boot:2.0.1.RELEASE;
  3. spring cloud:Finchley.M9;

 

服務發現元件 Eureka

 

Eureka是Netflix開發的服務發現框架,SpringCloud將它整合在自己的子專案
spring-cloud-netflix中,實現SpringCloud的服務發現功能。Eureka包含兩個元件:
Eureka Server和Eureka Client。
Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行注
冊,這樣EurekaServer中的服務登錄檔中將會儲存所有可用服務節點的資訊,服務節點
的資訊可以在介面中直觀的看到。
Eureka Client是一個java客戶端,用於簡化與Eureka Server的互動,客戶端同時也
就別一個內建的、使用輪詢(round-robin)負載演算法的負載均衡器。在應用啟動後,將會
向Eureka Server傳送心跳,預設週期為30秒,如果Eureka Server在多個心跳週期內沒有
接收到某個節點的心跳,Eureka Server將會從服務登錄檔中把這個服務節點移除(預設90
秒)。
 

Eureka註冊中心

(1)建立eureka模組

(2)引入依賴  父工程pom.xml定義Spring Boot與Spring Cloud版本

 

eureka模組pom.xml引入eureka-server

(3)新增application.yml

(4)編寫啟動類

建立包com.qiang.eureka ,包下建立啟動類EurekaServer或EurekaApplication

*注意註解:@EnableEurekaServer

(5)啟動執行啟動類,然後在瀏覽器位址列輸入  http://localhost:6868/  執行效果如下:

主介面中system status為系統資訊  General Info為一般資訊 

Instances currently registered with Eureka為註冊到的所有微服務列表

我們現在就將一些微服務都註冊到Eureka中,這樣所有的微服務之間都可以互相呼叫了。

提供者微服務開發

(1)建立provider模組,引入eureka-client依賴

(2)新增application.yml

(3)編寫Controller層,隨便寫點東西.

(4)編寫啟動類ProviderApplication

*注意註解:@EnableEurekaClient

(5)啟動執行啟動類,此時重新整理http://localhost:6868/,然後就會發現,這個微服務已經被註冊至服務中心了

然後我們試著執行provider模組的介面:localhost:12003/admin/findAll/5/1,執行效果如下

嗯,執行成功,高興嗎^_^

接著我們寫一個消費者,這裡需講述清楚幾點

1、不管消費者還是提供者,他們都是一個微服務,他們都“各自為政”

2、當微服務之間需要互相呼叫介面時,他們才會有消費者與提供者的“身份”

3、被呼叫介面的所屬微服務為“提供者”,反之為“消費者”

4、只有當服務都註冊進Eureka註冊中心時,才能相互呼叫,或者說相互“發現”服務

消費者微服務開發

(1)建立feign模組,引入eureka-client依賴與openfeign依賴

(2)新增application.yml

(3)編寫啟動類FeignApplication

*注意註解:@EnableDiscoveryClient 發現服務
                   @EnableFeignClients  使用feign發現服務 
                   此時可不寫@EnableEurekaClient,上面兩個註解會實現將此服務註冊進服務中心 
                   但是eureka-client依賴一定要引入

(4)在feign模組新增client包,包下建立介面PClient(ProviderClient)

 

@FeignClient註解用於指定從哪個服務中呼叫功能 ,注意 裡面的名稱與被呼叫的服務
名保持一致,並且不能包含下劃線。
@RequestMapping註解用於對被呼叫的微服務進行地址對映。注意 @PathVariable注
解一定要指定引數名稱,否則出錯

(5)編寫FeignController

(6)啟動執行類,此時再次重新整理http://localhost:6868,會發現feign微服務已經被註冊進去

然後我們試著執行feign模組的介面:localhost:12001/feign/admin/findAll/5/1,執行效果如下

成功√

相關文章