文章目录

  • 1、为什么HTTP连接池能提升系统性能?
  • 2、Feign是如何解决以上问题的?
  • 3、代码实现
  • 4、测试
  • 5、总结

1、为什么HTTP连接池能提升系统性能?

我们都了解过线程池、数据库连接池等;它的好处是避免了频繁的创建连接和销毁的步骤。首先我们知道HTTP连接需要经过三次握手,四次挥手的过程,这是很耗费性能的;所以HTTP连接池帮助我们节省了这一步,提高了吞吐量。

2、Feign是如何解决以上问题的?

首先Feign的HTTP客户端支持三种框架:HttpURLConnection、HttpClient、OkHttp;默认是HttpURLConnection

1、HttpURLConnection是JDK自带的,不支持连接池,如果要实现连接池机制,还需要自己编写代码,问题是你能写好底层代码吗?

2、HttpClient封装了一系列的HTTP属性,基于池的概念,不仅提高了开发效率,也提高了代码的健壮性。看!这是大佬写的

3、代码实现

1、添加依赖

         <dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency>

注意在springcloud Hoxton SR1以后版本已经集成了HttpClient的包(包过此版本)

2、开启httpclient

feign:httpclient:enabled: true   #开启httpclient

3、业务编码

consumer 模块

@RestController
public class ProductController {@Resourceprivate ProductService productService;@GetMapping(value = "/product/object")public Product selectProductByObject(Product product) {return productService.selectProductByObject(product);}
}
@FeignClient(value = "service-provider")
public interface ProductService {/*    @GetMapping(value = "/product/list")List<Product> selectProductList();@GetMapping(value = "/product/{id}")Product selectProductById(@PathVariable("id") Integer id);*/@GetMapping(value = "/product/object")Product selectProductByObject(Product product);
}

provider模块

@RestController
@RequestMapping(value = "/product")
public class ProductController {@Resourceprivate ProductService productService;/*    @GetMapping(value = "/list")public List<Product> getProductList() throws InterruptedException {return productService.selectProductList();}@GetMapping(value = "/{id}")public Product selectProductById(@PathVariable("id") Integer id) {return  productService.selectProductById(id);*/}@GetMapping(value = "/object")public Product selectProductByObject(@RequestBody Product product) {return productService.selectProductByObject(product);}
}
public interface ProductService {/*    List<Product> selectProductList() throws InterruptedException;Product selectProductById(Integer id);*/Product selectProductByObject(Product product);
}
@Service
public class ProductServiceImpl implements ProductService {/*    @Overridepublic List<Product> selectProductList() {return Arrays.asList(new Product(1, "华为!", 100, 2999.0),new Product(2, "xiaomi", 99, 1999.0),new Product(3, "vivo", 102, 2999.0));}@Overridepublic Product selectProductById(Integer id) {return new Product(id, "RPC", 1, 100D);*/}@Overridepublic Product selectProductByObject(Product product) {return product;}
}

4、测试

5、总结

面试官:什么是HTTP连接池?你怎么回答?Feign性能调优之HTTP连接池相关推荐

  1. 面试官问:平常你是怎么对 Java 服务进行调优的?

    Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在"糙快猛"的互联网开发模式大行其道的今天,随着系 ...

  2. 面试官问:平常你是怎么对Java服务进行调优的?

    点击上方"",选择" 每天10:24,干货准时送达! 本文来源:http://t.cn/AiCTERJz Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面 ...

  3. Linux之SSH性能调优,防止连接等待时间过长,连接速度飞起

    SSH服务: 干货:我的虚拟机情况,改完之后 连接速度飞起 修改相应配置: vim /etc/ssh/sshd_conf UseDNS no GSSAPIAuthentication no 保存退出 ...

  4. “金三银四”春招指南之“性能调优”:MySQL+Tomcat+JVM,看完还怕面试官的轰炸?

    春招指南之"性能调优":MySQL+Tomcat+JVM,还怕面试官的轰炸? 01 MySQL性能调优 1.1 MySQL性能调优问题有哪些?怎么学? 关于这个,给大家看一份学习大 ...

  5. 面试官:我想用Nginx提升系统10倍性能,你有哪些建议?

    提升Web应用的性能从未像今天这样刻不容缓. 在线经济活动的比例日益提高,就连发展中国家和地区的经济活动都已经有5%以上在线进行了(相关数据请参考本文后面的资源).在这个超级链接.随时在线的现代世界, ...

  6. 面试官:我就问了一个JVM性能调优,没想到他能吹半个小时

    一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JV ...

  7. 面试官问如何评价上家公司要怎么回答较好?

    在跳槽面试时,我们作为求职者,要做的是给面试官留下好的印象.如果自己在专业问题以及其他方面都表现良好,而在评价上家公司的时候却一直给出负面评价,必然会让自己的形象大打折扣.面试官问如何评价上家公司要怎 ...

  8. 看完去怼面试官,Java尊享版性能调优分享给大家

    很多程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来. 但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了 ...

  9. Mysql数据库性能调优面试大全经典分析

    1.为啥要死磕Mysql Mysql作为一款大众免费开源的关系型数据库软件,受到国内很多"穷屌丝"企业的热烈欢迎,看一下目前最新数据库排行,Mysql排在第二位,仅此于Oracle ...

最新文章

  1. php 移动端隐藏引导页,移动端引导设计技巧1:前置的引导页
  2. dojo/domReady! 中感叹号的作用
  3. 执行apt-get命令提示没有该命令
  4. Exception in thread “main“ java.io.FileNotFoundException: C:\Temp (拒绝访问。)
  5. 自治时代:Oracle 公有云离我们很近,自治数据库离我们还远
  6. SYBASE中生成所有建表语句的过程
  7. 看视频课程的正确方法
  8. Vue-cli搭建vue基础项目
  9. linux操作系统的中断处理,Linux操作系统内核编程中断处理程序解读
  10. C、C++实现 -- 字符串分割函数split
  11. Java中变量及数据类型
  12. STM32读取伺服电机编码器信号
  13. 微信支付宝H5收款码扫码转账个人通道仿原生接口带备注可回调成功率9成以上
  14. Go开发 之 容器(数组Array、切片slice、映射map、列表list)
  15. WORD、WPS中实现交叉引用,位置跳转
  16. 浅谈SBOM(软件物料清单)
  17. C++中垃圾回收机制中几种经典的垃圾回收算法
  18. .removeAttribute is not a function
  19. 上号神器,英雄联盟手游扫码登录教程
  20. EF 计算时期/时间差

热门文章

  1. AutoScan-收集监视及办理器械
  2. angularjs 导出excel php,AngularJS 导出Excel指令
  3. 合并工具_分享一个SM to HISM合并工具
  4. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...
  5. python qq模块_Python的nonebot模块如何获取命令发出者的QQ?
  6. java 配置信息_[Java教程]java 配置信息类 Properties 的简单使用
  7. mysql 5.x数据库安装_手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug
  8. 随机手机号码_骗妹子手机号码,还记得iPhone自带计算器的小魔术吗?,看教程...
  9. sklearn特征的提取(上)
  10. SIGIR 2021 | 基于不确定性正则化与迭代网络剪枝的终身情感分类方法