springCloud-Alibaba——微服务之间使用Feign进行请求调用
目录
(1)概述:
Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,Nacos 也很好的兼容了 Feign,默认实现了负载均衡的效果。
因此在使用springCloudAlibaba微服务的时候,强烈推荐使用Feign来作为微服务之间相互调用访问的方式。
(2)引入依赖:
因为商品微服务相当于是服务提供者,订单微服务相当于是服务消费者,只有在服务消费者中才需要访问调用服务提供者的接口,因此需要在订单微服务的pom.xml中增加Feign的依赖:
(3)修改启动类:
在启动类上增加 @EnableFeignClients 注解开启 Feign 功能。
(4)创建Feign接口:
Feign是面向接口开发的,因此先创建一个接口,通过Feign调用其它微服务所提供的接口,返回对应的信息。然后由消费者微服务项目中的controller或者service类中,通过创建项目中创建的Feign对象,然后调用对应的Feign接口方法即可完成微服务调用,就像调用本地接口一样。
(5)修改微服务调用:
修改消费者微服务项目中的controller或者service类中,通过创建项目中创建的Feign对象,然后调用对应的Feign接口方法即可完成微服务调用。
(6)启动测试:
先启动nacos中心,然后启动商品微服务、订单微服务。访问订单微服务的接口还是和原来一样可以正常的访问返回信息。因此修改Feign接口成功。
(7)测试Feign负载均衡:
A、服务提供者多实例启动:
修改商品微服务(服务提供者)的接口方法,打印一下当前实例的端口号。然后设置idea的商品微服务可以多实例启动。然后商品微服务启动一次,然后修改下server.port的值再启动一个实例,即可完成商品微服务的多实例启动。
通过查看nacos中product-server也是启动了2个实例:
B、测试负载均衡:
通过手动刷新浏览器中访问订单微服务的接口,可以查看商品微服务多个实例启动界面中,打印的服务访问接口信息,可以得出结论,调用商品微服务的多个实例是轮流访问的,实现了负载均衡。说明使用的Feign自动集成Ribbon,实现了负载均衡的效果。