一.使用场景概述
微服务之间的调用是可以使用RestTemplate,并且可以用ribbon做负载均衡(只需在RestTemplate上加上@LoadBlance注解),虽然存在Eureka注册中心的情况下,可以使用服务提供者的name代替url。
但是类似“/service-provider/provide/getStudent/1"这种地址, 存在的问题是:
1.消费者必须要明确提供者的 application.name
2.还是太长,写起来还是很麻烦等
Feign: 是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API,”面向接口的形式“调用HTTP请求,达到就像调用本地方法一样调用远程HTTP请求的效果
Spring Cloud Feign:对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便,并赋予了负载均衡等强大的功能支持
Spring Cloud Feign的使用方法也很简单,主要有以下两种方式:
1.服务消费者编写Feign接口的RequestMapping和服务提供者的RequestMapping保持一致的形式
2.服务提供者实现Feign接口的形式
二.Feign和Ribbon比较
1.feign和ribbon概述总览
feign 和 ribbon 是 Spring Cloud 的 Netflix 中提供的两个实现软负载均衡的组件,Ribbon 和 Feign 都是用于调用
其他服务的,方式不同。Feign 则是在 Ribbon 的基础上进行了一次改进