当前位置:首页 > 服务端 > feign的性能优化、Feign的使用-最佳优化两种方案

feign的性能优化、Feign的使用-最佳优化两种方案

性能优化基础:

feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记

feign底层客户端实现默认使用的是URLConnection,这是jdk自带的发送http请求的包,不支持连接池;
这样在发送http请求时,每次都要建立连接(三次握手),发送数据,断开连接(四次挥手),比较浪费性能、消耗时间

所以推荐使用另外两种底层实现(其中更推荐Apache HttpClient);
日志级别推荐设置basic和none,性能更好
性能优化配置设置:
feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记
1、httpclient已经被springboot管理版本,引入时,不需要加入版本号
2、在配置时,一定要把httpclient下的enable设置为true,使feign对httpclient的配置生效
3、feign的httpclient连接池的最大连接数,根据压力测试时,测出那个什么值性能最好就设置什么值,盲目的写多少,过大,过小都是不合适的。

Feign的使用-最佳实践

在实际开发项目使用feign的过程中,各公司逐渐对feign的使用方式有了更优的实践
方式一:继承与实现(不怎么推荐)
feign的客户端(服务消费者)和服务端(服务提供者)定义一个统一的父接口,这样统一管理,更加系统化
缺点:高耦合
feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记
方式二:抽取(推荐使用)
以前是客户端(服务消费者)写一套对服务端(服务提供者)的feign接口,这样当服务增多,每个服务都要写一套对该服务端的feign接口,且修改时也要一一修改;
现在反过来,由服务提供者自己抽取出一个feign的独立模块,其他服务中引入这个模块,即可调用这个服务了
feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记
缺点:引入这个服务端模块时,会将很多我这个客户端服务用不着的端口、pojo等都一起引入进来了,增加项目模块大小

方式二的实现

设userservice为服务提供者,orderservice为服务消费者,那我只需要新增(抽取)一个模块,对userservice所有的对外接口、实体类都写到这个模块(feign接口模块)里面来,那么其他所有的模块要使用userservice模块,向userservice发送请求,只需引入userservice的那个feign接口模块,即可使用,所有的服务消费者都使用userservice提供的这一套feign接口
feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记

注意:以这样的方式引入服务提供者的feignclient包,需要在启动类指定包路径,不然spring容器找不到这些feignclient
feign的性能优化、Feign的使用-最佳优化两种方案 _ JavaClub全栈架构师技术笔记
以上两种方式,更推荐第二种方式,第一种引入太多,项目臃肿

作者:茂桑
来源链接:https://blog.csdn.net/dayuiicghaid/article/details/126218016


版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/68021.html

标签: Feign
分享给朋友: