Version: Next
OpenFeign
声明式远程服务调用
Feign
是一个声明式WebService
客户端,使用Feign
可以让编写Web Service
客户端更加简单- 使用方法:定义一个服务器接口,然后在上面添加注解
Feign
支持可插拔式编码器和解码器Spring Cloud
对Feign
进行了封装,使其支持Spring MVC
标准注解和HttpMessageConverters
,形成OpenFeign
Feign
可以与Eureka
、Ribbon
组合使用以支持负载均衡
Feign 能做什么
Feign 能做什么
- 目的是使编写
Java Http
客户端变得更容易Ribbon
+RestTemplate
:利用 RestTemplate 对 HTTP 请求的封装处理,形成了一套模块化的调用方法,但是实际开发中,由于对服务依赖的调用不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用Feign
在上述模式的基础上进一步封装,由它来帮助开发者定义和实现依赖服务接口的定义- 只需创建一个接口,并使用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了使用
Ribbon
时,自动封装服务调用客户端的开发量
Feign
集成了Ribbon
- 利用
Ribbon
维护了Payment
的服务列表信息,并且通过轮询实现了客户端的负载均衡- 与
Ribbon
不同的是:通过Feign
只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用
Feign 与 OpenFeign 的区别
Feign | OpenFeign |
---|---|
Spring Cloud 中的一个轻量级 RESTFul HTTP 服务客户端,内置了 Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务 Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务 | Spring Cloud 在 Feign 的基础上支持了 Spring MVC 的注解 OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理方式产生实现类,实现类左负载均衡并调用其他服务 |