http 连接池能提升性能

http 的背景原理

a. 两台服务器建立 http 连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间。
b. Http 连接需要的 3 次握手 4 次分手开销很大,这一开销对于大量的比较小的 http 消息来说更大。

优化解决方案

a. 如果我们直接采用 http 连接池,节约了大量的 3 次握手 4 次分手;这样能大大提升吞吐率。
b. feign 的 http 客户端支持 3 种框架;HttpURLConnection、httpclient、okhttp;默认是HttpURLConnection。
c. 传统的 HttpURLConnection 是 JDK 自带的,并不支持连接池,如果要实现连接池的机制,还需要自己来管理连接对象。对于网络请求这种底层相对复杂的操作,如果有可用的其他方案,也没有必要自己去管理连接对象。
d. HttpClient 相比传统 JDK 自带的 HttpURLConnection,它封装了访问 http 的请求头,参数,内容体,响应等等;它不仅使客户端发送 HTTP 请求变得容易,而且也方便了开发人员测试接口(基于 Http 协议的),即提高了开发的效率,也方便提高代码的健壮性;另外高并发大量的请求网络的时候,还是用“连接池”提升吞吐量。

案例实现

1.添加相关的依赖

添加httpClient的依赖,同时添加Feign对HttpClient的支持

1.修改配置文件

在配置文件中开启feign对httpClient的设置。

注意:如果使用 HttpClient 作为 Feign 的客户端工具。那么在定义接口上的注解是需要注意,如果传递的是一个自定义的对象(对象会使用 json 格式来专递)。需要制定类型。

consumes=MediaType.APPLICATION_JSON_VALUE)

例子:

Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient相关推荐

  1. Spring Cloud【Finchley】-06服务消费者整合Feign

    文章目录 概述 实例 新建工程 增加maven依赖 创建一个Feign接口,并添加@FeignClient注解 修改Controller层,将RestTemplate改为调用Feign接口 启动类增加 ...

  2. 关于spring cloud 各种组件的停更/升级/替换

    以前常用的一些spring cloud的组件 现在spring cloud 常用的一些组件

  3. Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign

    上一篇文章,讲述了如何通过RestTemplate + Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务. Feign简介 Feign是一个声明式的伪Http客户端,它使得写Htt ...

  4. [Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用

    上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Por ...

  5. feign响应拦截_[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用

    上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Por ...

  6. 微服务feignclient_[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用

    上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Por ...

  7. 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

    在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnection.Ap ...

  8. Spring Cloud Feign使用详解

     通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...

  9. Spring Cloud Discovery——Eureka Discovery Client

    Eureka Discovery Client 依赖说明:一种基于REST的服务,用于定位服务,以实现中间层服务器的负载平衡和故障转移. Eureka是一种基于REST(Representationa ...

最新文章

  1. 内存分配管理 自定义
  2. python的库在哪_你知道python常见的库有哪些吗?五大python库
  3. 1、请简述DNS的作用,并说明当你输入网址“www.nxtc.edu.cn“按下回车后,DNS是怎么工作的?(关键步骤可以给出相应图示) 2、详细描述域名劫持攻击的过程及防御方式。
  4. 如何创建新的SAP CRM middleware subscription
  5. 边缘计算框架_【北大成果】一种集成多组网协议多边缘计算框架的边缘计算处理平台...
  6. Java剪切板操作大全
  7. 小程序 获取腾讯地图计算两经纬度的实际距离(可批量)_多地打卡
  8. [POI2006]OKR-Periods of Words(KMP)
  9. 漫画 | 硬核技术预测你有没有女朋友
  10. java 排队实现_java中的优先列队-PriorityQueue源码实现解析
  11. Fiddler2介绍
  12. GrandTotal for Mac v7.2.2 发票收据预算设计软件
  13. 基于全局对比度的显著性区域检测
  14. 轻松调整C盘分区大小
  15. 使用计算机教学的好处,谈计算机在教学中的作用
  16. 最棒的10款MySQL GUI工具
  17. 全国人大财经委加快数据要素市场建设专项座谈会在京召开,聚合数据左磊受邀参会
  18. C语言——初识字符串
  19. STM32通用FLASH管理软件包——SFUD/FAL
  20. 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

热门文章

  1. mysql开启慢查询方法(转)
  2. 2012.12.26日学习笔记
  3. VMware演示手机虚拟化
  4. C# 修改项目文件夹名称完全版
  5. eclipse 关闭时progress information弹框_Spring开发环境搭建(Eclipse)
  6. anaconda 安装在c盘_最省心的Python版本和第三方库管理——初探Anaconda
  7. Pytorch的C++接口实践
  8. multi mysql_mysqld_multi 的使用方法
  9. web 服务器 内存 影响_高性能服务器架构思路「不仅是思路」
  10. Stream流思想和常用方法