简介:Feign是Netflix开发的声明式,模板化的HTTP客户端,简化了HTTP的远程服务的开发。Feign是在RestTemplate和Ribbon的基础上进一步封装,使用RestTemplate实现Http调用,使用Ribbon实现负载均衡。我们可以看成 Feign = RestTemplate+Ribbon
目录
1、Feign替代RestTemplate
1.1 Feign的使用步骤
2、自定义配置
2.1 Feign部分自定义配置
2.2 修改Feign自定义配置
2.2.1 方式一
2.2.2 方式二
3、Feign性能优化
3.1 Feign性能优化原理
3.2 实现Apache HttpClient
4、Feign最佳实践
4.1 方式一(继承)
4.2 方式二(抽取)
4.2.1 方式二(抽取)案例
4.3 Feign的包扫描
5、总结
1、Feign替代RestTemplate
1.1 Feign的使用步骤
图 1.1-1 Feign的使用步骤 |
---|
步骤一 步骤二 |
上图中展示的是Feign的调用步骤,相较于RestTemplate法更加的方便,代码更简洁。 |
2、自定义配置
2.1 Feign部分自定义配置
图 2.1-1 部分自定义配置 |
---|
上图中展示的是Feign运行的配置 |
2.2 修改Feign自定义配置
2.2.1 方式一
图 2.2.1-1 修改配置文件 |
---|
上图中展示的就是修改Feign自定义配置——日志配置的方法 |
2.2.2 方式二
图 2.2.2-1 修改配置文件 |
---|
上图中展示的就是修改Feign自定义配置——日志配置的方法 |
3、Feign性能优化
3.1 Feign性能优化原理
图 3.1-1 Feign性能优化原理 |
---|
上图中展示的Feign性能优化的原因,即默认情况下Feign底层不支持连接池,所以在发送请求时性能会受到影响,这里通过改变底层实现达到支持连接池的目的 |
3.2 实现Apache HttpClient
图 3.2-1 实现Apache HttpClient |
---|
上图中展示的是改变Feign底层,实现Apache HttpClient,从而让微服务连接支持连接池,提高性能 |
4、Feign最佳实践
4.1 方式一(继承)
图 4.1-1 方式一(继承) |
---|
上图中展示的是通过继承的方式实现统一接口: 即将微服务中的 FeignClient 定义的接口方法和被访问的提供者 Controller 中的方法统一一个标准 |
4.2 方式二(抽取)
图 4.1 方式一(抽取) |
---|
上图中展示的是通过抽取的方式实现统一接口,不好的一点就是在抽取出来的独立模块中集合了大量的函数,当消费者引用的有许多的函数使用不上的,所以产生了代码冗余,但是这里还是建议使用方式二作为标准。 |
4.2.1 方式二(抽取)案例
图 4.2.1-1 (抽取)案例步骤一 |
---|
实现最佳实践方式二的步骤如下:
|
上图展示的便是详细步骤,按照这样操作就可实现模块的抽取 |
4.3 Feign的包扫描
4.3-1 Feign的包扫描两种方式 |
---|
这里还是建议使用方式二,因为这样不会有代码冗余 |