
OpenFeign
问题引入
观察之前远程调用的代码

虽说 RestTemplate 对 HTTP 封装后,已经比直接使用 HTTPClient 简单方便很多,但是还存在一些问题:
- 需要拼接 URL,灵活性高,但是封装臃肿,URL 复杂时,容易出错。
- 代码可读性差,风格不统一。
微服务之间的通信方式,通常有两种:RPC 和 HTTP。 在 SpringCloud 中,默认是使用 HTTP 来进行微服务的通信,最常用的实现形式有两种:
• RestTemplate • OpenFeign
RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络通信细节。RPC 可以使用多种网络协议进行通信,如 HTTP、TCP、UDP 等,并且在 TCP/IP 网络四层模型中跨越了传输层和应用层。简言之 RPC 就是像调用本地方法一样调用远程方法。 常见的 RPC 框架有:
- Dubbo: Apache Dubbo 中文
- Thrift : Apache Thrift - Home
- gRPC: gRPC
OpenFeign 介绍
OpenFeign 是一个声明式的 Web Service 客户端。它让微服务之间的调用变得更简单,类似 controller 调用 service,只需要创建一个接口,然后添加注解即可使用 OpenFeign。
OpenFeign 的前身
Feign 是 Netflix 公司开源的一个组件。 • 2013 年 6 月,Netflix 发布 Feign 的第一个版本 1.0.0 • 2016 年 7 月,Netflix 发布 Feign 的最后一个版本 8.18.0 2016 年,Netflix 将 Feign 捐献给社区 • 2016 年 7 月 OpenFeign 的首个版本 9.0.0 发布,之后一直持续发布到现在。 可以简单理解为 Netflix Feign 是 OpenFeign 的祖先,或者说 OpenFeign 是 Netflix Feign 的升级版。OpenFeign 是 Feign 的一个更强大更灵活的实现。
Spring Cloud Feign
Spring Cloud Feign 是 Spring 对 Feign 的封装,将 Feign 项目集成到 Spring Cloud 生态系统中。 受 Feign 更名影响,Spring Cloud Feign 也有两个 starter:
• spring-cloud-starter-feign • spring-cloud-starter-openfeign
由于 Feign 的停更维护,对应的,我们使用的依赖是 spring-cloud-starter-openfeign。
Spring Cloud Feign 官方介绍




