feign使用_我的Spring Cloud(七):Feign 声明式接口调用

2506441e40e72562f95a0d2c5374a089.png

一、什么是Feign

Feign也是去实现负载均衡,但是它的使用要比Ribbon更加简化,它实际上是基于Ribbon进行了封装,让我们可以通过调用接口的方式实现负载均衡。Feign和Ribbon都是由Netflix提供的,Feign是一个声明式、模板化的Web Service客户端,它简化了开发者编写Web服务客户端的操作,开发者可以通过简单的接口和注解来调用HTTP API,使得开发变得更加简化、快捷。Spring Cloud Feign也是基于Netflix Feign的二次开发,它整合了Ribbon和Hystrix,具有可插拔、基于注解、负载均衡、服务熔断等一系列的便捷功能,也就是说我们在实际开发中可以用Feign来取代Ribbon。

相比较于Ribbon+RestTemplate的方式,Feign大大简化了代码的开发,Feign支持多种注解,包括Feign注解、JAX-RS注解、Spring MVC注解等,Spring Cloud对Feign进行了优化,整合了Ribbon和Eureka,从而让Feign使用更加方便。

二、Ribbon和Feign的区别

Ribbon是一个通用的HTTP客户端工具,Feign是基于Ribbon实现的。

三、Feign的优点

1.Feign是一个声明式的Web Service客户端。

2.支持Feign注解、Spring MVC注解、JAX-RS注解

3.Feign是基于Ribbon实现,使用起来更加方便

4.Feign集成了Hystrix,具备服务熔断的功能

四、实战!

1.创建Module,配置pom.xml如下:

<dependency>
    	

2.创建配置文件application.yml,配置如下:

server

3.创建启动类,代码如下:

package 

注解说明:

* @EnableFeignClients:声明其为Feign客户端

4.创建声明式接口,代码如下:

package 

5.Handler代码如下:

package 

6.测试feign的负载均衡功能

(1)分别启动注册中心,两个不同端口的服务提供者,feign,注册中心页面如下:

d912dadd0400785a9e69aa26461d7910.png

(2)多次访问 http://localhost:8050/feign/index ,我们可以看到两个端口地址交替出现,证明Feign实现了负载均衡。如下图:

0169d77ae1f15e2646cb8b7ac7b64618.png

c88b619f8ebb090ef5d4dc8897c50b91.png

7.测试Feign的熔断机制

(1)我们先停掉所有的服务提供者,只保留注册中心和Feign的服务,打开注册中心如下图:

03863a415ca0d717cbafa8660c28ebab.png

(2)再次访问 http://localhost:8050/feign/index 可看到如下图的内容:

0cf51b3d5ac4fc92cd56a9aa9bce2fa6.png

(3)为了不直接暴露错误信息,我们需要添加服务熔断机制,修改application.yml如下:

server

配置说明:

* feign.hystrix.enable:是否开启熔断机制,默认false。

(4)创建IFeignService的实现类FeignServiceImpl,在里面定义容错处理机制,通过@Component注解将FeignServiceImpl实例注入到IOC容器中,代码如下:

package 

(5)在IFeignService接口定义处定义@FeignClient的fallback属性来做降级处理,设置映射,映射到FeignServiceImpl中去。修改IFeignService后代码如下:

package 

(6)重复(1)、(2)步,出现以下界面,证明服务熔断机制起效。如图:

e15afb3200f6af2da29b423714008cfe.png

五、总结

我们在本次的代码中,采用Feign实现了负载均衡和服务熔断。了解了Feign的配置以及使用的基本原理,那么我们再来仔细学习下Hystix容错机制。让我们期待下一篇《我的Spring Cloud(八):Hystix 容错机制》。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值