微服务系列文章之Feign服务发现和调用(4/100)

1. 简介

Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable annotation support including Feign annotations and JAX-RS annotations. Feign also supports pluggable encoders and decoders. Spring Cloud adds support for Spring MVC annotations and for using the same HttpMessageConverters used by default in Spring Web. Spring Cloud integrates Ribbon and Eureka to provide a load balanced http client when using Feign.

Feign 是一个声明式调用HTTP协议服务的客户端
支持注解形式发现与调用服务
支持编码与解码
与Ribbon、Eureka结合使用可实现负载均衡功能

2 整体实现步骤

1 这里添加了一个AntOrder(订单模块),用于测试。会调用AntPay(支付模块)
2 pom.xml中引入spring-cloud-starter-netflix-eureka-server和spring-cloud-starter-openfeign依赖


微服务系列文章之Feign服务发现和调用(4/100)_第1张图片

3 application.yml中指定配置项,端口、application.name、eureka-server地址


微服务系列文章之Feign服务发现和调用(4/100)_第2张图片

4 SpringBoot 启动类添加启用Fegin的注解@EnableFeignClients


微服务系列文章之Feign服务发现和调用(4/100)_第3张图片

5 在当前项目Service接口类名上使用FeignClient注解指定服务提供者的服务名@FeignClient("service-ant-pay"),代表在Eureka注册的service-ant-pay服务。

6 在需要调用服务提供者的接口方法之上使用注解指定调用服务提供者提供的方法@RequestMapping("/hello")


微服务系列文章之Feign服务发现和调用(4/100)_第4张图片

这里5,6步代表调用service-ant-pay 的hello方法。

7 在需要使用服务提供者提供的方法之处,使用第5步与第6步实例化好的服务提供者的方法


微服务系列文章之Feign服务发现和调用(4/100)_第5张图片

3 启动

微服务系列文章之Feign服务发现和调用(4/100)_第6张图片

目前应该有4个模块。我们按照EurekaServer,AntPay,AntOrder,Gateway的步骤依次启动。
访问localhost:8761


微服务系列文章之Feign服务发现和调用(4/100)_第7张图片

可以看到Eureka中启动了的三个服务。端口号分别是8765,8766,8767

4 调用服务

1 直接访问AntPay的服务localhost:8765/hello?name=Anthony

微服务系列文章之Feign服务发现和调用(4/100)_第8张图片

也就是这个接口
微服务系列文章之Feign服务发现和调用(4/100)_第9张图片

2 我们也可以通过Feign访问这个接口,也就是从AntOrder中来访问,上面提到的端口号是8767, http://localhost:8767/sayHelloToAnt?name=Tom
微服务系列文章之Feign服务发现和调用(4/100)_第10张图片

3 我们也可以通过Zuul去访问,我们在zuul的端口号是8766,而且zuul配置中,AntPay的服务名是service-ant-pay,所以我们访问: http://localhost:8766/service-ant-pay/hello?name=Anthony&token=123
微服务系列文章之Feign服务发现和调用(4/100)_第11张图片

4 所以我们也可以从Zuul中访问AntOrder,间接通过Feign去访问AntPay的接口 http://localhost:8766/service-ant-order/sayHelloToAnt?name=Tom&token=123
微服务系列文章之Feign服务发现和调用(4/100)_第12张图片

到这里我们就实现了服务之间的相互调用的初步解析。

5 负载均衡
这里通过更改端口号的方式新建了一个AntPay的实例。


微服务系列文章之Feign服务发现和调用(4/100)_第13张图片

所以现在应该是在Eureka里面也可以看到。


微服务系列文章之Feign服务发现和调用(4/100)_第14张图片

这个时候我们再去访问zuul, http://localhost:8767/sayHelloToAnt?name=Tom
返回的信息就可能是:
hi Tom, I am from port:8765
或者
hi Tom, I am from port:8764

也就是说Feign会通过负载均衡来实现了两个服务的调用。

6 代码

对应的代码已经提交到github 项目AntMicroService,
下面是对应的tag,可以对应查看。

微服务系列文章之Feign服务发现和调用(4/100)_第15张图片

参考链接

Spring Cloud OpenFeign

你可能感兴趣的:(微服务系列文章之Feign服务发现和调用(4/100))