SpringCloud 服务消费者Feign

个人学习SpringCloud系列 Feign篇

Github Link: https://github.com/panjianlong13/SpringBoot-SpringCloud/tree/master/spring-cloud-feign


Feign介绍

Feign是一种声明式、模板化的HTTP客户端,可以帮助我们更快捷、优雅地调用HTTP API。Feign的功能类似dubbo暴露服务,但是与dubbo稍有不同的是Feign是HTTP REST接口的形式暴露的

Spring Cloud Feign是基于Netflix feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能外,还提供了一种声明式的Web服务客户端定义的方式。Spring Cloud对Netflix Feign进行了增强和包装,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便,能够在类接口上添加注释,成为一个REST API 客户端。

Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,具有可插拔的注解特性,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。Spring Cloud Feign具备可插拔的注解支持,支持Feign注解、JAX-RS注解和Spring MVC的注解。

总结如下:

1.可插拔的注解支持,包括Feign注解和JAX-RS注解

2.支持可插拔的HTTP编码器和解码器

3.支持Hystrix和它的Fallback支持Ribbon的负载均衡

4.支持HTTP请求和响应的压缩Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单

5.Feign还提供了HTTP请求的模板,通过编写简单的接口和注解,就可以定义好HTTP请求的参数、格式、地址等信息

 

 

Feign和Ribbon的区别

Ribbon
是一个基于 HTTP 和 TCP 客户端的负载均衡器
它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现均衡负载。

Feign
Spring Cloud Netflix 的微服务都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去调用,而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法。

Feign封装了Ribbon spring-cloud-starter-feign 里面已经包含了 spring-cloud-starter-ribbon


 

Feign实战

启动Eureka和上篇中的三个Provider,此处不详细展开

SpringCloud 服务消费者Feign_第1张图片

 

新建SpringBoot项目

pom.xml中添加依赖

application.property

SpringCloud 服务消费者Feign_第2张图片

开启Feign

在工程的启动类中,通过@EnableFeignClients 注解开启Feign的功能:

SpringCloud 服务消费者Feign_第3张图片

定义接口

通过@FeignClient("服务名"),来指定调用哪个服务。在代码中调用'eureka-provider'服务的'/'接口,服务提供者有Provider-1,Provider-2和Provider-3

SpringCloud 服务消费者Feign_第4张图片

SpringCloud 服务消费者Feign_第5张图片 

消费控制器

通过RestController调用Provider的home方法

SpringCloud 服务消费者Feign_第6张图片

启动Feign-Consumer

 

测试Feign-Consumer

在命令窗口curl http://localhost:8080/hello,发现Feign已经实现负载均衡

SpringCloud 服务消费者Feign_第7张图片

你可能感兴趣的:(SpringBoot,&,SpringCloud,学习实战)