07.27 Spring Cloud(五):服務消費者Feign

一:概述

上節說過,Feign完美的整合了Ribbon和Hystrix,即Feign可以無縫對接的進行客戶端負載均衡以及熔斷器作用。

Feign是一個聲明式的Web Service客戶端,它的目的就是讓Web Service調用更加簡單。Feign還提供了HTTP請求的模板,通過編寫簡單的接口和插入註解,我們就可以定義好HTTP請求的參數、格式、地址等信息。

二:原理

1.通過@EnableFeignCleints註解開啟FeignCleint

2.根據Feign的規則實現接口,並加@FeignCleint註解,來綁定該接口對應服務

3.程序啟動後,會進行包掃描,掃描所有的@ FeignCleint的註解的類,並將這些信息注入IOC容器中。

4.當接口的方法被調用,通過jdk的代理,來生成具體的RequesTemplate,RequesTemplate再生成Request

5.Request交給Client去處理,其中Client可以是HttpUrlConnection、HttpClient

6.最後Client被封裝到LoadBalanceClient類,這個類結合類Ribbon做到了負載均衡。

三:項目的構建

結合之前的Eureka Server以及Eureka Provider項目。Feign項目如下,

3.1:pom.xml配置:

<dependency>

<groupid>org.springframework.cloud/<groupid>

<artifactid>spring-cloud-starter-feign/<artifactid>

3.2:application.properties

#應用名稱

spring.application.name=feign-consumer

#端口號

server.port=8766

#註冊中心地址

eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8761/eureka/

#忽略安全認證

management.security.enabled=false

3.3:入口程序

@EnableDiscoveryClient //啟動服務發現

@EnableFeignClients //開啟Feign功能

@SpringBootApplication

public class FeignConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(FeignConsumerApplication.class, args);

}

}

3.4:新建一個API的依賴

@FeignClient(name = "eureka-provider", fallback ConsumerFallback.class)

public interface RemoteClient {

@RequestMapping(value = "/index")

String index();

}

說明:上述我們定義了一個遠程調用API的接口,註解@FeignClient,Ribbon自動被應用,定義服務提供者的name,以及熔斷器類:ConsumerFallback.class

3.5:新建熔斷器ConsumerFallback

@Component

public class ConsumerFallback implements RemoteClient {

@Override

public String index() {

return "Feign客戶端訪問失敗!";

}

}

注意:注入@Component

3.6:啟動Feign項目

查看Eureka Server服務註冊是否成功

Spring Cloud(五):服務消費者Feign

訪問消費者Feign項目API

Spring Cloud(五):服務消費者Feign

3.7:終止服務提供者Eureka Provider的項目

Spring Cloud(五):服務消費者Feign

我們可以看到,熔斷起了作用。

3.8:客戶端負載均衡

參考Ribbon那節內容

3.9:Hystrix的儀表盤

pom.xml新增依賴

<dependency>

<groupid>org.springframework.cloud/<groupid>

<artifactid>spring-cloud-starter-hystrix/<artifactid>

<dependency>

<groupid>org.springframework.cloud/<groupid>

<artifactid>spring-cloud-starter-hystrix-dashboard/<artifactid>

入口程序新增註解@EnableHystrixDashboard

@EnableDiscoveryClient //啟動服務發現

@EnableFeignClients //開啟Feign功能

@SpringBootApplication

@EnableCircuitBreaker

@EnableHystrixDashboard //開啟Hystrix儀表盤

public class FeignConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(FeignConsumerApplication.class, args);

}

}

點擊Monitor Stream進入儀表盤監控界面,可以查看相關熔斷信息

Spring Cloud(五):服務消費者Feign


分享到:


相關文章: