SpringCloud-03-Feign负载均衡

上篇文章学完了Ribbon,接下来让我们学习一下Feign
前提:Feign内部集成了Ribbon,只不过是Java社区的人觉得java开发不应该是Ribbon这样的Rest风格,而应该是想java一样面向接口编程,所以Feign就被创造出来!

1.什么是Feign

Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端

2.Feign能干什么

  • Feign旨在使编写Java Http客户端变得更容易
  • 前面在使用Ribbon + RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一个客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步的封装,由他来帮助我们定义和实现依赖服务接口的定义,在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(类似以前Dao接口上标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解),即可完成对服务提供方的接口绑定,简化了使用SpringCloud Ribbon 时,自动封装服务调用客户端的开发量。

3.Feign的使用

  • 导入依赖
<!--Feign的依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>
  • 编写API接口,供Feign调用

  • 使用@FeignClient(指出哪个服务开启负载均衡,然后一个方法映射一个请求)
    1

  • 调用api接口中的方法,完成请求的拼接,从而达到服务调用的效果!而策略的定义同Ribbon一样
    在这里插入图片描述

  • 开启Feign
    使用@EnableFeignClients(basePackages = {“com.sqx.springcloud”})//扫描我们feign管理的api接口,开启Feign
    在这里插入图片描述

4.Feign和Ribbon的总结:

Ribbon去服务调用的时候采用的是,通过服务名+写死路径去拼接形成另一个服务的url,从而实现调用,其偏向于Rest风格调用!

Feign则是调用接口的方法,映射请求去拼接从而完成调用,其偏向于我们Java的面向接口调用!

posted @ 2022-01-23 20:36  爪洼ing  阅读(25)  评论(0编辑  收藏  举报