《HttpClient官方文档》2.1 连接持久性-2.2 HTTP连接路由
2.1. 连接持久性
一个主机与另一个主机建立连接的过程是相当复杂的,并且涉及两个端点之间的多个分组交换,这可能相当耗时。尤其是对于较小的HTTP消息来说,连接握手的开销是很大的。如果打开的连接能够重用于执行多次请求,就可以实现更高的数据吞吐量。
HTTP/1.1协议规定每个缺省的HTTP连接都可以重用于多次请求。 符合HTTP/1.0协议的端点同样可以通过一种机制明示它们的优先权来维持连接的可用性并将其用于多次请求。
HTTP代理还可以维持空闲连接存活一段时间,以防后续请求需要用到同一目标主机的连接。 通常称维持连接存活的能力为连接持久性,HttpClient完全支持这种能力。
2.2. HTTP连接路由
HttpClient能够直接或通过可能包含多个中间连接的路由-也称为跳转来建立到目标主机的连接。HttpClient 将连接路由区分为平面路由,隧道路由和分层路由。使用多个中间代理来隧接到目标主机被称为代理链。
平面路由通过连接到目标主机或仅一次的代理来建立。隧道路由通过代理链连接到首个隧道从而到达目标主机来建立。不通过代理的路由不能成为隧道路由。分层路由通过已有连接上面的分层协议来建立。 只有在到达目标主机的隧道,或者不通过代理的直连之上,协议才能被分层。
2.2.1. 路由计算
RouteInfo接口表示通过一个或多个中间步骤或跳转最终到达目标主机的的路由信息。HttpRoute是RouteInfo接口的具体实现类, 这个类是不能被修改的(不可变的)。HttpTracker是RouteInfo接口的可变实现类,由HttpClient在内部使用于追踪到最终路由目标主机的剩余跳转数。HttpTracker类可以在成功执行跳转到下一个路由目标之后被更新。HttpRouteDirector类是一个帮助类,可用于计算路由中的下一步, 这个类在HttpClient内部使用。
HttpRoutePlanner是一个接口,表示基于执行上下文来计算到给定目标的完整路由的策略。HttpClient使用了两个默认的HttpRoutePlanner接口实现类。 其中SystemDefaultRoutePlanner类是基于 java.net.ProxySelector类,默认情况下,它从系统属性或运行应用程序的浏览器中获取JVM的代理设置。而DefaultProxyRoutePlanner实现类不会使用任何的JAVA系统属性,也不会使用系统或浏览器的代理设置。它总是通过同样的默认代理来计算路由。
2.2.2. 安全的HTTP连接
如果在两个连接端点之间传输的信息不能被未经授权的第三方读取或篡改,那么HTTP连接可被认为是安全的。最普遍使用SSL / TLS协议这种技术确保HTTP传输安全性,不过也可以采用其他加密技术。一般HTTP传输通过SSL/TLS加密过的连接来分层。
转载自 并发编程网 - ifeve.com
《HttpClient官方文档》2.1 连接持久性-2.2 HTTP连接路由相关推荐
- 《HttpClient官方文档》2.4 多线程请求执行
2.4.多线程请求执行 当HttpClient拥有类似PoolingClientConnectionManage类这样的池连接管理器,它就能够使用多线程来并发执行多个请求. PoolingClient ...
- 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)
如果你的mysql是8.0以上的的就不要在参考阿里的官方文档了,因为阿里的文档只适用于mysql5版本,再次吐槽一下,阿里的文档才是真正的挖坑埋人!!!,以下才是标准的配置过程 1 初始化mysql数 ...
- Dockerfile 官方文档
官方文档地址:https://docs.docker.com/engine/reference/builder/#shell 用法: docker build 命令从Dockerfile文件和上下文环 ...
- JMeter官方文档阅读及实践笔记(上)
JMeter笔记 一.测试计划元件概览 本节简单介绍测试计划的不同部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1.Thread Group,线程组 线程组元素是任何测试计划的起点.所有 ...
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(下)
Hyperledger Fabric 2.0 官方文档中文版 第6章 教程下 总目录 6.教程(下) 使用CouchDB 为什么使用CouchDB? 在Hyperledger Fabric中启用Cou ...
- redisson使用全解——redisson官方文档+注释(上篇)
文章目录 官方文档 Redisson项目介绍 一.概述 二.配置方法 2.1. 程序化配置方法 2.2. 文件方式配置 2.2.1 通过YAML格式配置 2.3. 常用设置 2.4. 集群模式 2.4 ...
- EdgeX Foundary 2.1Jakarta版官方文档中文翻译
基于机器翻译,部分翻译有修订,不清楚的地方请参阅官方文档. 引言 EdgeX Foundry是一个开源的.供应商中立的.灵活的.可互操作的.位于网络边缘的软件平台,与设备.传感器.执行器和其他物联网对 ...
- Disruptor官方文档实现
获得Disruptor Disruptor是什么,我就不废话了,本文是对官方文档的实现,直接进入主题,要使用Disruptor可以通过Maven或者下载jar来安装Disruptor,只要把对应的ja ...
- kafka官方文档学习笔记2--QuickStart
下载kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz 解压安装包 > tar ...
最新文章
- moment 当前日期
- linux脚本外输入参数,shell 脚本中关于用户输入参数的处理
- [unreal4入门系列之十四] 在UE4中添加碰撞触发事件
- latex hyperref_LaTeX 使用心得
- HDU 3037 Saving Beans (Lucas法则)
- 华为交换机-端口由trunk改为access
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
- 关于vue的语法规则检测报错问题
- linux c程序中判断能不能ping,用C/C++代码检测ip能否ping通(配合awk和system可以做到批量检测)...
- 说说大型高并发高负载网站的系统架构
- vs2017+BabeLua+Cocos2dx3.10配置
- 车用总线技术 | 从另一种视角了解CAN FD
- android win7共享文件夹,win7系统共享文件夹如何用手机看电脑里面的电影
- indexedDB整理
- 微信开发者工具关联gitee
- camera调试基础经验分享
- recovery的一些开发点滴
- 2010下半年网络规划设计师上午试卷、标准参考答案及分析(3)
- 关于STM32与GSM模块之间简单应用
- 北理工上网linux版本,北理工路由器上网设置指南
热门文章
- oracle rac vip什么用,oracle 10g,11g RAC中vip作用
- python列表怎么创建_python怎么创建列表
- 注射“基因剪刀”治疗罕见遗传病,患者28天内无明显不良反应,诺奖得主很激动...
- 波士顿动力机器狗打工这一年
- 特斯拉车主「作死」成真:炫耀「主驾无人」,自动驾驶导致车毁人亡
- 打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过AI和人眼
- 杀手级AI补代码工具问世,支持23种语言及5种主流编辑器,程序员沸腾了
- go语言web开发框架_Iris框架讲解(六):Session的使用和控制
- 简单易用NLP框架Flair发布新版本!(附教程)
- 寻找项目中顶级Vue对象 (一)